У меня проблема с множественным наследованием, которую я не могу понять. Вот очень обобщенный минимальный пример, который воспроизводит мою ошибку (мой код намного сложнее, чем этот).
class Thing(object):
def __init__(self, x=None):
self.x = x
class Mixin(object):
def __init__(self):
self.numbers = [1,2,3]
def children(self):
return [super().__init__(x=num) for num in self.numbers]
class CompositeThing(Mixin, Thing):
def __init__(self):
super().__init__()
def test(self):
for child in self.children():
print(child.x)
obj = CompositeThing()
obj.test()
За это , я ожидаю, что метод children()
вернет список Thing
, созданный из self.numbers
. Вместо этого я получаю TypeError: super(type, obj): obj must be an instance or subtype of type
. Кстати, то же самое происходит, если я не вызываю конструктор и не разрешаю детям возвращать super()
3 раза (т. Е. Необоснованный суперкласс). Есть идеи, почему это может происходить?
Заранее спасибо!