子類構造函數調用super().init()
class Person: def __init__(self, name = 'Person'): self.name = name class Puple(Person): # 直接繼承Person,可調用name pass class Puple_Init(Person): # 繼承Person,覆蓋父類__init__方法,增加age屬性 def __init__(self, age): # 不可調用name屬性 self.age = age class Puple_Super(Person): # 繼承Person,改寫__init__方法,增加age屬性 def __init__(self, name, age): # 可調用name屬性 # super(Class, self).method() super(Puple_Super, self).__init__(name) self.age = age
pp = Puple() PP_i = Puple_Init(10) PP_s = Puple_Super('Puple_Super', 12) pp.name pp_i.name pp_s.name
結果
Person
Traceback (most recent call last):
File "D:/desktop/111.py", line 26, in <module>
print(PP_i.name)
AttributeError: 'Puple_Init' object has no attribute 'name'
Puple_Super