Что выведет этот код?
Anonymous Poll
14%
<generator object zeros at ...>
60%
[0, 0, 0, 0]
20%
Ошибку
6%
Узнать ответ
💩 Какова разница между методами getattr и getattribute?
Оба этих метода являются магическими.
🔘
Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.
🔘
Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz).
✅ Таким образом,
Оба этих метода являются магическими.
🔘
getattr
class Missing:
attr = 42
def getattr(self, name):
print(f"In getattr, asked for {name}")
return 73
m = Missing()
print(m.attr) # 42
print(m.xyz) # In getattr, asked for xyz; 73
Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.
🔘
getattribute
class Always:
attr = 42
def getattribute(self, name):
print(f"In getattribute, asked for {name}")
return 73
a = Always()
print(a.attr) # In getattribute, asked for attr; 73
print(a.xyz) # In getattribute, asked for xyz; 73
Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz).
✅ Таким образом,
getattribute
— это метод, который управляет всеми запросами атрибутов, тогда как getattr
вызывается, когда getattribute
не находит атрибут.✈️Python имеет встроенный модуль
⬆️Этот небольшой код создает новый ZIP архив под именем новый_архив.zip и помещает в него файлы file1.txt и file2.txt.
➡️Модуль
zipfile
, который предоставляет функционал для работы с архивами ZIP. Давайте создадим простой пример, чтобы продемонстрировать его возможности:import zipfile
# Создаем новый ZIP файл
with zipfile.ZipFile('новый_архив.zip', 'w') as new_zip:
# Добавляем файлы в архив
new_zip.write('file1.txt')
new_zip.write('file2.txt')
# Можно добавить еще файлы по мере необходимости
⬆️Этот небольшой код создает новый ZIP архив под именем новый_архив.zip и помещает в него файлы file1.txt и file2.txt.
➡️Модуль
zipfile
обладает широкими возможностями, позволяя извлекать файлы, читать содержимое архива, добавлять и удалять файлы, а также многое другое. Это удобный инструмент, который позволяет манипулировать архивами непосредственно из кода Python.Если вам интересно узнать больше о модуле zipfile
или экспериментировать с архивами в Python, рекомендую обратиться к официальной документации Python.👍3
Что выведет код?
Anonymous Poll
26%
('lup', 'i', 'n')
27%
('l', 'u', 'p', 'i, 'n')
15%
('lupin')
32%
Ошибку
✈️Метод subclasshook используется для определения, является ли один класс подклассом другого. Он вызывается при проверке
⬆️Этот метод позволяет настроить поведение этих функций для пользовательских классов.
➡️Пример:
⬆️В примере метод
isinstance()
и issubclass()
для определения отношения наследования между классами.⬆️Этот метод позволяет настроить поведение этих функций для пользовательских классов.
➡️Пример:
class A:
def init(self, value):
self.value = value
class B:
def init(self, value):
self.value = value
def subclasshook(cls, subclass):
return (hasattr(subclass, 'value') and
callable(subclass.value) and
subclacc.value.name == 'print_value')
class C:
def init(self, value):
self.value = value
def print_value(self):
print(self.value)
a = A(5)
b = B(10)
c = C(15)
# Проверка
print(issubclass(C, B)) # True
print(issubclass(A, B)) # False
⬆️В примере метод
subclasshook
класса B
проверяет, есть ли у подкласса метод print_value
. Если да, то возвращает True
, что позволяет считать его подклассом B
.👍3