Хук потомка в ООП в Python
Иногда родительскому классу нужно
узнать о каждом новом потомке.
Для этого служит метод
__init_subclass__.
Он вызывается в момент объявления класса-потомка, еще до создания объектов. Давайте выведем имя каждого наследника:
class User:
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
print('subclass:', cls.__name__)
Объявим потомка. Сработает хук родителя:
class Student(User):
pass
Такой способ удобен для регистрации наследников, проверки полей потомка или общей настройки иерархии.
В классе User сделайте
__init_subclass__, который
записывает имя потомка в список
User.subclasses.
Объявите классы Employee
и Student, наследующие
от User. Выведите список
User.subclasses.