# 1.建立一個類 class Bird: def __init__(self): self.hungry =True def eat(self): if self.hungry: print("Ahhhhh") self.hungry=False else: print("No Thanks.") #實例化. b= Bird() #調用方法.打印的結果爲:Ahhhhh b.eat() #再一次調用eat方法.打印結果:No Thanks. b.eat()
#2. 建立一個子類. class SongBird(Bird): def __init__(self): self.sound ="Squawk!" def sing(self): print(self.sound) #實例化 sb =SongBird() #調用方法,打印結果爲:Squawk! sb.sing() #調用eat方法,報錯. sb.eat() #爲何報錯, SongBird 沒有屬性Hungry ,SongBird重寫了構造函數,可是新的構造函數沒有任何初始化屬性hungry. # 解決辦法1.調用未關聯的超類構造函數 # 2. 使用super方法.
#3. 子類的解決辦法: class SongBird(Bird): def __init__(self): # Bird.__init__(self) #1. 調用超類構造函數. super().__init__() #2. 經過super方法調用. self.sound= "squawk!" def sing(self): print(self.sound) sb =SongBird() sb.sing() #squawk! sb.eat() #Ahhhhh sb.eat() #No Thanks.