Ограничение параметра типа в ООП в Python
Иногда параметр типа должен быть не любым, а только определённым классом или его потомком. После имени параметра ставят двоеточие и базовый тип.
Пусть есть класс User:
class User:
def __init__(self, name):
self.name = name
Сделаем коробку, которая принимает
только User или класс-наследник:
class Box[T: User]:
def __init__(self, value: T):
self.value = value
Положим в коробку объект пользователя:
box = Box(User('john'))
print(box.value.name) # выведет 'john'
Запись T: User говорит
проверке типов: подставлять можно
только User и его подклассы,
но не число и не строку.
Сделайте класс Employee,
наследующий User. Сделайте
обобщённый StaffBox[T: User]
и сохраните в нём работника.