Я пытаюсь создать класс Child
, который наследуется от класса Parent
. Класс Parent
использует конструкторы, вызывающие подкласс Child1
для своего экземпляра.
class Parent():
def __init__(self):
print("use the constructor")
@classmethod
def constructor(self, arg1, kind='child1'):
for cls in self.__subclasses__():
if cls.istype(kind):
return cls(arg1)
class Child1(Parent):
def __init__(self,arg1):
self.arg1 = arg1
@staticmethod
def istype(kind):
return kind == 'child1'
class Child(Parent):
def __init__(self):
super().__init__()
test1 = Parent.constructor(1)
test2 = Child.constructor(1)
В приведенном выше примере, когда я делаю экземпляр test1
:
test1 = Parent.constructor(1)
type(test1)
приводит к __main__.Child1
, что хорошо. Однако когда я делаю экземпляр test2
:
test1 = Child.constructor(1)
type(test2)
, получается NoneType
. Как сделать test2
типа __main.__Child1
, не касаясь определения Parent
и Child1
?
Спасибо