python超级问题

时间:2011-06-24 18:56:11

标签: python

我有关于python的super()和多重继承的语法问题。假设我有A和B类,两者都有方法hello()。我有一个C类,它依次从A和B继承。

如何从C中显式调用B的hello()方法?看起来很简单,但我似乎无法找到它的语法。

4 个答案:

答案 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从右到左调用超类方法。