Какие плюсы и минусы slots
Python
Junior
Без компании
Какие плюсы и минусы slots
Ответы
**Плюсы:**
- Экономия памяти: экземпляры классов со `__slots__` не хранят `__dict__`, что уменьшает занимаемую память.
- Быстрый доступ к атрибутам: доступ к слотам оптимизирован на уровне CPython.
- Защита от опечаток: нельзя динамически добавлять атрибуты, не указанные в `__slots__`.
**Минусы:**
- Невозможность динамического добавления атрибутов.
- Наследование требует аккуратного обращения: если родитель имеет `__slots__`, а потомок нет, то у потомка будет `__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.address = "123 St" # AttributeError
```