Расскажи про __slots__
Python
Junior
Без компании
Расскажи про __slots__
Ответы
`__slots__` — это механизм в Python, позволяющий явно указать атрибуты класса, что экономит память и ускоряет доступ к ним.
**Преимущества:**
- Уменьшает потребление памяти, так как исключает `__dict__` для хранения атрибутов.
- Ускоряет доступ к атрибутам (на ~20-30%).
**Ограничения:**
- Нельзя динамически добавлять новые атрибуты.
- Наследование требует аккуратности: если родитель имеет `__slots__`, а потомок — нет, у потомка будет `__dict__`.
**Пример:**
```
class Person:
__slots__ = ('name', 'age') # Разрешенные атрибуты
p = Person()
p.name = "Alice" # OK
p.age = 30 # OK
p.salary = 5000 # AttributeError (не в __slots__)
```
Используйте `__slots__` для классов с фиксированным набором атрибутов, особенно в memory-sensitive приложениях.