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