python學習筆記-day10-【 類的擴展: 重寫父類,新式類與經典的區別】
阿新 • • 發佈:2018-05-27
SM per div 以及 筆記 如何 img int 重寫
上周已經記錄過類的許多定義概念,今天接著繼承來說說,如何重寫父類,以及在Python2與python3中中經典類與新式類的區別。
一、重寫父類
1、重寫,繼承父類方法,方法定義完全一樣,只是子類實現換成了子類所特有的特性。
class Zll(): def smile(self): print(‘哈哈哈哈‘) class Xz(Zll,Dcg): def smile(self):#重寫父類的方法 print(‘呵呵呵‘)
2、重寫父類方法,但是還想保持父類本身的實身,子類本身也有自己的實現
class Zll(): defsmile(self): print(‘哈哈哈哈‘) def smile2(self): print(‘哈哈哈哈‘) class Dcg(): def smile2(self): print(‘啊啊啊啊‘) class Xz(Zll,Dcg): def smile(self):#重寫父類的方法 print(‘呵呵呵‘) def smile2(self): #重寫父類的方法 # Zll().smile2() #調用了父類 super(Xz, self).smile2() #這個自動幫你找到父類的 #如果是單繼承的時候,Zll().smile2()與super(Xz, self).smile2()一樣 #如果是多繼承的時候,super(Xz, self).smile2()會先找到誰就會用誰了,不會再進行多次調用父類 print(‘呵呵呵‘) #1、父類的方法一點用的沒有,我重新寫 #2、父類有這個方法,但是呢,它的功能不夠完善, # 給這個方法在原有的基礎上,加上 # x = Xz() # x.smile2()
二、經典類與新式類的區別
1、python3中兩者的區別
#經典類與新式類的區別 classMy: pass class My2(object): pass #在python3是沒有任何區別的
2、python2中兩者的區別
class My: pass class My2(object): pass #在python2裏是有區別的 #在python2裏面,一個是深度優先,一個是廣度優先
#python2裏
#經典類是深度優先
#新式類
#新式類是廣度優先
#在pyton2經典類裏面不能調用super
#在python3裏面都是廣度優先
python學習筆記-day10-【 類的擴展: 重寫父類,新式類與經典的區別】