Ответ
__slots__ — это механизм в Python для оптимизации памяти, ограничивающий набор атрибутов экземпляра класса. Он заменяет динамический словарь __dict__ фиксированным набором атрибутов, что уменьшает потребление памяти и ускоряет доступ к атрибутам.
Пример:
class User:
__slots__ = ['name', 'age'] # Фиксированные атрибуты
def __init__(self, name, age):
self.name = name
self.age = age
user = User("Alice", 30)
print(user.name) # Alice
# user.email = "alice@example.com" # Вызовет AttributeError (атрибут не в __slots__)
Плюсы:
- Экономия памяти (особенно полезно для создания множества экземпляров).
- Более быстрый доступ к атрибутам.
Минусы:
- Нельзя динамически добавлять новые атрибуты.
- Наследование требует аккуратности: если родительский класс имеет
__slots__, то у класса-потомка тоже должен быть определен__slots__(он может быть пустым или расширять родительский).
Видео-ответы
▶
▶
▶
▶
▶