Зачем нужен __slots__
Python
Senior
СБЕР Роботы
Зачем нужен __slots__
Ответы
`__slots__` в Python используется для оптимизации памяти и ускорения доступа к атрибутам класса. Он позволяет явно указать, какие атрибуты может иметь экземпляр класса, заменяя динамический словарь `__dict__` фиксированным набором дескрипторов.
**Преимущества:**
- Экономит память (особенно полезно при множестве экземпляров).
- Ускоряет доступ к атрибутам (избегает поиска в `__dict__`).
**Ограничения:**
- Нельзя динамически добавлять новые атрибуты.
- Наследование требует аккуратности (если родитель имеет `__slots__`, дочерний класс должен его переопределить).
**Пример:**
```
class Person:
__slots__ = ['name', 'age'] # Фиксированные атрибуты
p = Person()
p.name = "Alice" # ОК
p.age = 30 # ОК
p.salary = 5000 # Ошибка: AttributeError
```
Используйте `__slots__` для оптимизации в критичных к памяти сценариях.