1. 程式人生 > >python學習筆記-day10-【 類的擴展: 重寫父類,新式類與經典的區別】

python學習筆記-day10-【 類的擴展: 重寫父類,新式類與經典的區別】

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():
    def
smile(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中兩者的區別

#經典類與新式類的區別

class
My: pass class My2(object): pass #在python3是沒有任何區別的

2、python2中兩者的區別

class My:
    pass
class My2(object):
    pass


#在python2裏是有區別的
#在python2裏面,一個是深度優先,一個是廣度優先


#python2裏
#經典類是深度優先

#新式類
#新式類是廣度優先

#在pyton2經典類裏面不能調用super
#在python3裏面都是廣度優先
 

技術分享圖片 技術分享圖片

python學習筆記-day10-【 類的擴展: 重寫父類,新式類與經典的區別】