Веб-версияОткрыть в Telegram

ПостПро __slots__

18 июня 2023
К
Коробка с питоном
Про __slots__ Python, аналогично другим динамическим языкам, таким как JavaScript, предоставляет возможность манипулирования объектами в рантайме, в том числе позволяет добавлять, изменять и удалять атрибуты. Цена этого – понижение скорости доступа к атрибутам и дополнительные расходы памяти. Такое поведение нужно не всегда. Бывают случаи, когда мы точно знаем, какие атрибуты будут у наших экземпляров классов. Или же мы хотим ограничить добавление новых атрибутов. Именно для этого и существует __slots__. Слоты задаются через атрибут __slots__ в классе: class SlotsClass: slots = ('foo', 'bar') >>> obj = SlotsClass() >>> obj.foo = 5 >>> obj.foo # 5 >>> obj.another_attribute = 'test' Traceback (most recent call last): File "python", line 5, in <module> AttributeError: 'SlotsClass' object has no attribute 'another_attribute' Теперь мы не можем добавлять новые атрибуты к нашим объектам. Скорость доступа к атрибутам повышается на 25-30%, потому что при доступе к ним их больше не надо вычислять. В свою очередь, память экономится из-за того, что у класса не создается __dict__, который как раз хранил атрибуты. #std #slots
2 · 383 ·

Рядом в ленте

ККоробка с питономСоздание временных файлов В процессе написания скрипта может потребоваться создание временных файлов, которые будут удалены автоматически после завершения работККоробка с питономShielded execution в asyncio Допустим, есть следующий обработчик, который производит оплату: async def handler(request): await service.pay(request.user) return
это сообщение
ККоробка с питоном__slots__ и наследование Важно помнить, что при попытке унаследовать класс с __slots__ подкласс их унаследует, но так же и создаст __dict__ для новых атрибутов:ККоробка с питономИнтересный доклад, в котором разработчик из Uchi.ru рассказывает, как они строили realtime аналитику. Внутри доклада Kafka, Redis, Postgres и, внимание, Django.
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем