考虑以下代码:
class A:
def foo(self):
return "A"
class B(A):
def foo(self):
return "B"
class C(B):
def foo(self):
tmp = ... # call A's foo and store the result to tmp
return "C"+tmp
应该写什么代替...
,以便调用班级foo
中的祖父母方法A
?我尝试了super().foo()
,但它只调用了类foo
中的父方法B
。
我使用的是Python 3。
答案 0 :(得分:10)
有两种方法可以解决这个问题:
要么你可以像其他人所建议的那样明确地使用A.foo(self)方法 - 当你想要调用A类的方法而不管A是否是B的父类时使用它:
class C(B):
def foo(self):
tmp = A.foo(self) # call A's foo and store the result to tmp
return "C"+tmp
或者,如果你想使用B的父类的.foo()方法,无论父类是否为A,那么使用:
class C(B):
def foo(self):
tmp = super(B, self).foo() # call B's father's foo and store the result to tmp
return "C"+tmp
答案 1 :(得分:1)
您可以明确地从祖父母类中调用该方法:
class C(B):
def foo(self):
tmp = A.foo()
return "C" + tmp
答案 2 :(得分:1)
你可以简单地明确一下这门课程。 super()
允许您隐含关于父级,自动解析Insert text from a text box into and Access 2010 DataBase using VB.Net,但没有其他任何特殊之处。
class C(B):
def foo(self):
tmp = A.foo(self)
return "C"+tmp
答案 3 :(得分:1)