Для чего используется __slots__ в Python

Python Middle Без компании
Для чего используется __slots__ в Python
Ответы
`__slots__` оптимизирует память и ускоряет доступ к атрибутам, ограничивая набор допустимых атрибутов экземпляра. По умолчанию Python хранит атрибуты в словаре `__dict__`, что гибко, но требует больше памяти. `__slots__` заменяет `__dict__` фиксированным набором атрибутов. **Пример:** ``` class Person: __slots__ = ['name', 'age'] def __init__(self, name, age): self.name = name self.age = age p = Person('Alice', 30) p.name = 'Bob' # OK p.salary = 5000 # AttributeError: 'Person' object has no attribute 'salary' ``` **Плюсы:** - Экономия памяти (особенно для множества экземпляров) - Ускорение доступа к атрибутам (~20-30%) **Минусы:** - Нельзя динамически добавлять атрибуты - Наследование требует аккуратности (если родитель имеет `__slots__`, а потомок нет — будет `__dict__`)