При множественном наследовании, когда дочерний объект всегда наследует от 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()