У меня есть следующая иерархия классов. Цель состоит в том, чтобы вызывающий код выбрал либо базовый объект Foo, либо объект Foobar, который также предоставляет дополнительную функциональность Bar.
Код: Выделить всё
class Foo:
def __init__(self):
self.foo = 'foo'
class Bar:
def __init__(self, attr):
self.attr = attr
def bar(self):
print(self.attr + 'bar')
class Foobar(Foo, Bar):
def __init__(self):
super().__init__(self.foo)
Но когда я пытаюсь его запустить:
Код: Выделить всё
>>> fb = Foobar()
AttributeError: 'Foobar' object has no attribute 'foo'
Как правильно инициализировать Foobar? Я прочитал ряд статей и сообщений SO об инициализации с множественным наследованием, но ни в одной из них не было случая, когда один базовый конструктор требует свойства другого базового класса.
Подробнее здесь:
https://stackoverflow.com/questions/793 ... nheritance