【发布时间】:2016-12-28 06:14:43
【问题描述】:
我只是在 python 中尝试使用多重继承。我想出了这个
class ParentOne:
def foo(self):
print("ParentOne foo is called")
class ParentTwo:
def foo(self):
print("ParentTwo foo is called")
class Child(ParentOne, ParentTwo):
# how is this working
def call_parent_two_foo(self):
super(ParentOne, self).foo()
# This does not work
def call_parent_foo(self):
super(ParentTwo, self).foo()
def call_super_foo(self):
super(Child, self).foo()
def foo(self):
print("Child foo is called")
if __name__ == "__main__":
child = Child()
child.foo()
child.call_super_foo()
child.call_parent_two_foo()
# child.call_parent_foo() #This gives the below error
# super(ParentTwo, self).foo()
# AttributeError: 'super' object has no attribute 'foo'
它给出以下输出
Child foo is called
ParentOne foo is called
ParentTwo foo is called
我对在这种情况下如何评估 super(ParentOne, self).foo() 的调用感到困惑。据我了解ParentOne 类对ParentTwo 类的方法和属性一无所知。在多重继承的情况下 super 是如何工作的
【问题讨论】:
标签: python python-2.7 python-3.x inheritance