Кисель в Айти | Python разработка
04.04
Ну что, еще помните для чего нужны slots? Про них все слышали, но никто не использует 😅
Идея слотов проста - каждый раз, создавая экземпляр класса питон хранит все объекты в словаре dict. У словарей есть свои накладные расходы. А если мы указываем slots, то теперь для хранения используются кортежи. Они экономнее и быстрее.
Разница в памяти около 30% на ровном месте. Есть и прирост в скорости создания экземпляров. А так же в скорости доступа к атрибутам.
Есть особенности: - Слоты не наследуются. У каждого дочернего класса нужно прописывать заново. - Нельзя динамически добавлять атрибуты в класс - При указании слотов пропадает поддержка слабых ссылок. Лечится добавлением weakref в слоты вручную.
Но стоит иметь ввиду, что хоть какой то смысл использовать слоты появляется только при наличии большого количества экземпляров.
Простой пример тут
#pythonеще контент в этом сообществе
еще контент в этом соообществе
Кисель в Айти | Python разработка
04.04
войдите, чтобы увидеть
и подписаться на интересных профи