1. 程式人生 > >python - 構造函數

python - 構造函數

python 構造函數


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‘


python - 構造函數