У меня есть базовый класс, который я наследую при создании других классов.
Одна из вещей, которые я хотел бы сделать, во время __init__()
, - зарегистрировать родительский класс, из которого создается экземпляр объекта.Сегодня я делаю это явным образом:
class Main:
def __init__(self, src):
print(f"hello from {src}")
class One(Main):
def __init__(self):
super().__init__("one")
class Two(Main):
def __init__(self):
super().__init__("two")
One()
Two()
Это выводит
hello from one
hello from two
Есть ли способ для Main
узнать, какой класс в конечном итоге создал объект?
Я думаю о чем-то вроде (это просто дико взмах руки, чтобы показать то, что я хотел бы назвать голым __init__
вместо передачи описательного параметра в видев коде выше)
class Main:
def __init__(self, src):
wherefrom = something_which_holds_the_class_hierarchy[1].__name__ # index 1 = one class above this one
print(f"hello from {wherefrom}")
class One(Main):
def __init__(self):
super().__init__()
class Two(Main):
def __init__(self):
super().__init__()
One()
Two()