python2.7 的 super() 会跳过直接父项吗?

super() of python2.7 skips direct parents?

当我试图从 class C 调用 class Bbar() 时,它是 B 的直接子类,结果是 bar()class A 被调用。但是我明确要求应该使用 B 版本。该方法如何解析为A的方法?

class A(object):
    def bar(self):
        print('bar from A')

class B(A):
    def bar(self):
        print('bar from B')

class C(B):
    def bar(self):
        super(B, self).bar()

c = C()
# It should print "bar from B"
c.bar()
# But actually it prints "bar from A"

因为super(sub_class, instance).method()表示在实例instance上调用sub_classparent的方法method。由于 B 的父级是 A,因此结果是有道理的。

你要的是super(C, self).bar().