我有关于python的super()和多重继承的语法问题。假设我有A和B类,两者都有方法hello()。我有一个C类,它依次从A和B继承。
如何从C中显式调用B的hello()方法?看起来很简单,但我似乎无法找到它的语法。
答案 0 :(得分:5)
从B
明确调用hello
的{{1}}方法:
C
答案 1 :(得分:4)
>>> class A(object):
def hello(self):
print "hello from A"
>>> class B(object):
def hello(self):
print "hello from B"
>>> class C(A, B):
def hello(self):
print "hello from C"
>>> c = C()
>>> B.hello(c)
hello from B
>>> # alternately if you want to call it from the class method itself..
>>> class C(A, B):
def hello(self):
B.hello(self) # actually calling B
>>> c = C()
>>> c.hello()
hello from B
答案 2 :(得分:3)
您可能需要考虑使用super() - 而不是硬编码的B.hello() - ,如Python's super() considered super中所述。在这种方法中,C.hello()使用super()并自动调用A.hello(),后者又使用super()并自动调用B.hello(),没有类名的硬编码。
否则,B.hello()确实是做你想要的正常方式。
答案 3 :(得分:-1)
请记住,Python从右到左调用超类方法。