Введение в ограничение атрибутов в ООП в Python
Обычный объект Python может получить новый атрибут в любой момент: достаточно присвоить значение через точку. Иногда нужно заранее перечислить, какие поля у объекта вообще допустимы.
Для этого в классе задают атрибут
__slots__ - кортеж с именами
разрешённых атрибутов экземпляра.
Давайте сделаем класс User
с ограничением на name
и age:
class User:
__slots__ = ('name', 'age')
Создадим объект и запишем разрешённые атрибуты:
user = User()
user.name = 'john'
user.age = 25
print(user.name, user.age) # выведет 'john 25'
Список в __slots__ задаёт,
какие имена может иметь объект,
ещё до того, как вы начнёте
записывать в него данные.