Pythoni c способ возврата экземпляров родительского класса из дочернего - PullRequest
0 голосов
/ 13 апреля 2020

При множественном наследовании, когда дочерний объект всегда наследует от Mixin и некоторый тип Thing, как я могу получить метод в Mixin, чтобы позволить дочернему элементу возвращать экземпляры родительского элемента Thing? Следующий код работает путем непосредственного вызова графа порядка разрешения методов, но выглядит не pythoni c. Есть ли лучший способ?

class Thing1(object):
    def __init__(self, x=None):
        self.x = x

class Thing2(object):
    def __init__(self, x=None):
        self.x = 2*x

...


class Mixin(object):
    def __init__(self, numbers=(1,2,3)):
        self.numbers = numbers
        super().__init__()

    def children(self):
        test_list = []

        for num in self.numbers:
            # What is a better way to do this?
            test_list.append(self.__class__.__bases__[1](x=num))

        return test_list

class CompositeThing1(Mixin, Thing1):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def test(self):
        for child in self.children():
            print(child.x)

obj = CompositeThing1()
obj.test()
...