use*_*042 29 python polymorphism inheritance
假设我有两个类(一个是父类,一个是子类).如果在子类中定义的方法不同,我如何引用父类中的方法?
这是代码:
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)
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我想用"self.f(num)"命令引用父类A,而不是B中创建无限递归的方法本身.先感谢您.
tza*_*man 38
用途super
:
return 7 * super(B, self).f(num)
Run Code Online (Sandbox Code Playgroud)
或者在python 3中,它只是:
return 7 * super().f(num)
Run Code Online (Sandbox Code Playgroud)
jim*_*iki 33
如果您知道要使用A,您也可以通过以下方式明确引用A:
class B(A):
def f(self,num):
return 7 * A.f(self,num)
Run Code Online (Sandbox Code Playgroud)
记住你必须明确地给成员函数Af()提供self参数
与其他答案一致,有多种方法可以调用超类方法(包括构造函数),但是在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__()
Run Code Online (Sandbox Code Playgroud)
Python的3.X
class A(object):
def __init__(self):
print "world"
class B(A):
def __init__(self):
print "hello"
super().__init__()
Run Code Online (Sandbox Code Playgroud)
super()
现在相当于super(<containing classname>, self)
按该文档.
归档时间: |
|
查看次数: |
55609 次 |
最近记录: |