如何在python中引用父方法?

2024-06-08 21:51:40 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个类(一个是父类,一个是子类)。如果子类中也定义了方法different,我如何引用父类中的方法?

代码如下:

class A:
    def __init__(self, num):
        self.value=num
    def f(self, num):
        return self.value+2
class B(A):
    def f(self, num):
        return 7*self.f(num)

在最后一行,我想用“self.f(num)”命令引用父类A,而不是B中创建无限递归的方法本身。提前谢谢你。


Tags: 方法代码命令selfreturn定义initvalue
3条回答

如果知道要使用,也可以通过以下方式显式引用:

class B(A):
    def f(self,num): 
        return 7 * A.f(self,num)

记住,必须显式地将self参数赋给成员函数A.f()

使用^{}

return 7 * super(B, self).f(num)

或者在python 3中,它只是:

return 7 * super().f(num)

与其他答案一样,有多种方法可以调用超级类方法(包括构造函数),但是在Python-3.x中,该过程被简化了:

Python-2.x

class A(object):
 def __init__(self):
   print "world"

class B(A):
 def __init__(self):
   print "hello"
   super(B, self).__init__()

Python-3.x

class A(object):
 def __init__(self):
   print "world"

class B(A):
 def __init__(self):
   print "hello"
   super().__init__()

根据the docs,现在super()等价于super(<containing classname>, self)

相关问题 更多 >