Back to questions
Junior — Middle
49
Что происходит с механизмом работы класса в Python после объявления __slots__?
Answer from AI
sobes.tech AI
После объявления в классе атрибута __slots__ Python перестаёт использовать стандартный словарь __dict__ для хранения атрибутов экземпляров. Вместо этого выделяется фиксированный набор атрибутов, указанных в __slots__, которые хранятся в более компактной структуре. Это приводит к снижению потребления памяти и ускорению доступа к атрибутам, но накладывает ограничения: нельзя динамически добавлять новые атрибуты, не указанные в __slots__, и класс не будет иметь атрибут __dict__ (если явно не добавить его в __slots__).
Пример:
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
p.x = 10 # работает
# p.z = 5 # вызовет AttributeError, так как 'z' не в __slots__