面向对象 如何 跳过父类 去找爷类的方法

符合 跳过父类 调用爷类的方法

class A(object):
    def foo(self):
        print("A的foo")


class B(A):
    def foo(self):
        print("B的foo")


class C(B):
    def foo(self):
        # 在 这里 想调用爷类方法
        super().foo()


V = C()
V.foo()

我试过 super().super().foo() 不行
A.foo() 可以 但是维护成本高 有没有像super() 一样 方便找到爷类方法的 代码?

class A(object):
    def foo(self):
        print("A的foo")
 
class B(A):
    def foo(self):
        print("B的foo")

class C(B):
    def foo(self):
        super(B, self).foo()
 
 
V = C()
V.foo()

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    你可以使用 super() 函数来调用爷类的方法。 super() 用于调用父类(或祖父类)的方法,不需要显式地指定父类的名字。

    下面是将该方法应用到你的代码的示例:

    class A(object):
        def foo(self):
            print("A的foo")
    
    
    class B(A):
        def foo(self):
            print("B的foo")
    
    
    class C(B):
        def foo(self):
            super(B, self).foo()  # 调用父类B的方法
    
    
    V = C()
    V.foo()
    

    这将输出:

    A的foo
    

    C 类的 foo 方法中,我们使用 super(B, self).foo() 调用了父类 Bfoo 方法,它继而调用了爷类 Afoo 方法。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^