經典類與新式類的區別

2022-08-09 22:27:27 字數 1276 閱讀 3106

經典類:

class foo:

新式類:

class foo(object):

建立類的時候,繼承object類,該類就是新式類!

這一切在python3之後發生了變化,python3裡面建立的都是新式類

這兩種類的區別:

新式類重定義的方法更多,當然這不是重點,重點是兩種類在多繼承狀態下查詢「方法」的規則不同。

經典類: 深度查詢

顯示類:廣度查詢

通過指令碼來演示區別:

class

hero:

def__init__

(self,name):

self.name =name

defspeciality(self):

print("

危難時刻,挺身而出")

class

superhero:

defwhere(self):

print("

出現在漫畫中")

class

rich:

def__init__

(self,name):

self.name =name

defspeciality(self):

print("

有錢,花心")

class

marvel(superhero,rich):

defdo_somethings(self):

print("

heal the world")

marvel類的父類:superhero,rich

物件iron_man執行方法speciality(),

新式類的查詢過程:

superhero——>rich——>hero

在superhero中沒有方法speciality(),所以執行rich中的speciality()

>>> iron_man = marvel('stark')

>>> iron_man.speciality()

有錢,花心

同樣的指令碼,通過python2.7 執行

>>> iron_man = marvel('stark')

>>> iron_man.speciality()

危難時刻,挺身而出

Python新式類與經典類的區別

經典類和新式類的繼承順序 class a def init self print a class b a def init self print b pass class c a def init self print c pass class d b,c 這種情況,是先走本身的建構函式,然後根據順...

python 新式類與經典類的區別

在python 2及以前的版本中,由任意內建型別派生出的類 只要乙個內建型別位於類樹的某個位置 都屬於 新式類 都會獲得所有 新式類 的特性 反之,即不由任意內建型別派生出的類,則稱之為 經典類 python2.x中,預設都是經典類,只有顯式繼承了object才是新式類,即 class person...

10 02新式類與經典類的區別

class father object 有object就是新式類,沒有object就是經典類,新式類修正了一 些bug。def int self self.fname ffff print father.init def func self print father.func def bad sel...