Введение в ограничение свойств в ООП в 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__ задаёт,
какие имена может иметь объект,
ещё до того, как вы начнёте
записывать в него данные.