Python中的構造函數是__init__函數。在Python中,子類如果定義了構造函數,而沒有調用父類的,那么Python不會自動調用,也就是說父類的構造函數不會執行。
比如有test.py的module文件:
class A: def __init__(self, name): self.name = name class B(A): def __init__(self, age): self.age = age
子類B繼承自A,但是子類B的構造函數沒有調用A的構造函數。下面我們這樣測試:
>>>import test >>>b = test.B(15) >>>b.age 15 >>>b.name AttributeError: 'B' object has no attribute 'name'
由於B沒有調用A的構造函數,因此,實例b上面也沒有屬性name,造成訪問出錯。