Ну что, еще помните для чего нужны slots? Про них все слышали, но никто не использует 😅

Идея слотов проста - каждый раз, создавая экземпляр класса питон хранит все объекты в словаре dict. У словарей есть свои накладные расходы. А если мы указываем slots, то теперь для хранения используются кортежи. Они экономнее и быстрее.

Разница в памяти около 30% на ровном месте. Есть и прирост в скорости создания экземпляров. А так же в скорости доступа к атрибутам.

Есть особенности: - Слоты не наследуются. У каждого дочернего класса нужно прописывать заново. - Нельзя динамически добавлять атрибуты в класс - При указании слотов пропадает поддержка слабых ссылок. Лечится добавлением weakref в слоты вручную.

Но стоит иметь ввиду, что хоть какой то смысл использовать слоты появляется только при наличии большого количества экземпляров.

Простой пример тут

#python
repost

15

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь