1. 如果子类定义了自己的__init__构造方法函数,当子类的实例对象被创建时,子类只会执行自己的__init__方法函数,如果子类未定义自己的构造方法函数,会沿着搜索树找到父类的构造方法函数去执行父类里的构造方法函数。
2. 如子类定义了自己的构造方法函数,如果子类的构造方法函数内没有主动调用父类的构造方法函数,那父类的实例变量在子类不会在刚刚创建子类实例对象时出现了。
[[email protected] day8]# cat t4.py
#!/usr/bin/env python class aa: def __init__(self): self.x = 10 self.y = 12 def hello(self, x): return x + 1 class bb(aa): def __init__(self): aa.__init__(self) self.z = 14 a = aa() print a.x, a.y b = bb() print b.x, b.y
[[email protected] day8]# python t4.py
10 12
10 12
要是没有调用父类的构造函数结果报错
[[email protected] day8]# cat t4.py
#!/usr/bin/env python class aa: def __init__(self): self.x = 10 self.y = 12 def hello(self, x): return x + 1 class bb(aa): def __init__(self): #aa.__init__(self) self.z = 14 a = aa() print a.x, a.y b = bb() print b.x, b.y
[[email protected] day8]# python t4.py
10 12
Traceback (most recent call last):
File "t4.py", line 18, in <module>
print b.x, b.y
AttributeError: bb instance has no attribute ‘x‘
时间: 2024-10-11 10:51:20