multiple inheritance in python with super
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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() |
目的是从parent1继承foo(),从parent2继承bar()。但是,parent2和c.bar()得到的c.foo()是重用错误。请指出问题并提供解决方案。
您可以直接在父类上调用方法,手工提供
这里只有
1 2 3 4 5 6 | class Child(Parent1, Parent2): def foo(self): Parent1.foo(self) def bar(self): Parent2.bar(self) |
使用所描述的更改运行代码段会得到所需的输出:
1 2 | P1 foo P2 bar |
请参阅此代码在ideone.com上运行