class Parent1(object):
def foo(self):
print "P1 foo"
def bar(self):
print "P1 bar"
class Parent2(object):
def foo(self):
print "P2 foo"
def bar(self):
print "P2 bar"
class Child(Parent1, Parent2):
def foo(self):
super(Parent1, self).foo()
def bar(self):
super(Parent2, self).bar()
c = Child()
c.foo()
c.bar()
Намерение состоит в том, чтобы наследовать foo() из Parent1 и bar() из Parent2. Но c.foo(), полученный для parent2 и c.bar(), является результирующей ошибкой. Пожалуйста, укажите на проблему и предложите решение.множественное наследование в python с супер
Первый аргумент 'super' - это класс, который начнет искать« выше »в иерархии наследования, поэтому' foo' будет из 'Parent2', а' bar' будет из 'object' (w у которого нет такого атрибута, предположительно вызывающего ошибку, о которой вы упоминаете только мимоходом). Вместо этого используйте 'Child' и' Parent1' в ваших 'супер'-вызовах. – jonrsharpe
Почему бы просто не использовать 'Parent1.foo()' и 'Parent2.bar()'? – acdr
@jonrsharpe: Спасибо за разъяснение. возможный дублированный вопрос, который вы предложили, имеет функцию инициализации __init__. поэтому я не был уверен, что обычные методы и __init__ будут следовать тому же правилу для наследования – SamCodes