Для чего используется __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__`)