🐍 Укус питона 🐍
Open in Telegram
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @tg_adminisrator 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython
Show more2 334
Subscribers
No data24 hours
-117 days
-3730 days
Posts Archive
2 334
💩 Какова разница между методами getattr и getattribute?
Оба этих метода являются магическими.
🔘
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 не находит атрибут.2 334
✈️Метод 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.2 334
Прокачай свои скилы с Алексеем Рыбаком! 🚀
Надоели скучные задачи по программированию? 💻
Время перейти на новый уровень!
🎖Приглашаем бекендеров и инженеров инфраструктуры на уникальный трехмесячный курс по системному дизайну и архитектуре высоконагруженных систем от Алексея Рыбака, главы разработки Bumble/Badoo с 20-летним опытом в highload проектировании.
В чем ценность этого курса?
✅ Огненная практика с первых дней обучения на реальных кейсах и собственной инфраструктуре
✅ Погружение «под капот» хайлоад систем, изучение паттернов и приемов масштабирования
✅ Топовые фишки и знания по архитектуре проектов и системному дизайну больших проектов (1-100M DAU)
✅ Живые сессии, брейнштормы, проектирование “у доски”
На выходе у вас появится опыт:
✅ Проектирования сложных систем
✅ Нагрузочного тестирования своей инфраструктуры (выжмете 100К запросов)
✅ Планирования ресурсов для проектов с большим количеством пользователей
✅ Масштабирования IT-проектов
✅ Практический опыт работы с кластерами Redis, CockroachDB и шардированными PostgreSQL/MySQL
✅ И многое другое!
➡️ Регистрируйся и погружайся в нескучный хайлоад
Реклама ИП Рыбак А. А. ИНН 771407709607
2 334
✈️Python имеет встроенный модуль
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.