我是 python 的初学者。我无法理解继承和 __init__()
。
class Num:
def __init__(self,num):
self.n1 = num
class Num2(Num):
def show(self):
print self.n1
mynumber = Num2(8)
mynumber.show()
结果:8
没关系。但我将 Num2
替换为
class Num2(Num):
def __init__(self,num):
self.n2 = num*2
def show(self):
print self.n1,self.n2
结果:错误。 Num2 没有属性“n1”。
在这种情况下,Num2
如何访问n1
?
最佳答案
在第一种情况下,Num2
正在扩展类(class) Num
并且由于您没有重新定义名为 __init__()
的特殊方法在 Num2
, 它继承自 Num
.
When a class defines an
__init__()
method, class instantiation automatically invokes__init__()
for the newly-created class instance.
在第二种情况下,由于您正在重新定义 __init__()
在 Num2
如果要扩展其行为,则需要显式调用父类(super class) ( Num
) 中的那个。
class Num2(Num):
def __init__(self,num):
Num.__init__(self,num)
self.n2 = num*2
关于python - Python中的继承和init方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5166473/