Наследование классов с помощью конструкторов приводит к NoneType - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь создать класс 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?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...