繼承object物件對python多繼承的影響

2021-07-24 23:47:18 字數 971 閱讀 7266

今天看到個有趣的文章裡面談到python的經典類和典型類,遂驗證並總結。

經典類不繼承自object,多繼承時深度優先搜尋

classc1:

pass

新式類直接或間接繼承自object類,多繼承時廣度優先搜尋

class

c2(object)

: pass

class

a(object)

: def

speek

(self)

: print("aaaaaaaaaaa"

)class

b(a)

: pass

class

c(a)

: def

speek

(self)

: print('ccccccc'

)class

d(b, c)

: pass

d = d()

d.speek()

python2.7下,當a是新式類時,輸出:cccccc; 當a是經典類時輸出:aaaaaa

python3.3下,無論a是否繼承自object,輸出都是:cccccc

a

/ \

/ \

b c

\ /

\ /d

深度優先搜尋時,搜尋順序 d->b->a 廣度優先搜尋時順序: d->b->c->a

可見py2會根據新式類或者經典類採用不同的搜尋方法,但是py3則不理會這一點全部採用廣度優先搜尋。

Object物件與繼承

這個方法返回引數物件那個的原型 function fn var f new fn object.getprototypeof f fn.prototype注意幾個特殊物件的原型 空物件的原型是 object.prototype object.getprototypeof object.prototy...

物件(object) 鍵值對的集合

鍵值對 屬性 值 變數 值 屬性一般是變數 方法 函式 如果值為函式,屬性就是方法 var obj obj.p 1 2 物件o1的屬性foo指向物件o2,就可以鏈式引用o2的屬性 var o1 var o2 o1.foo o2 o1.foo.bar hello 物件的引用 指向同乙個記憶體位址 va...

列印object物件

一般情況在測試js時,如果介面返回的資料是object物件。如果不知道這個物件裡面具體的屬性就取值容易得到undefined。哪麼怎麼知道乙個object物件裡面到底是什麼東西呢。答案就是將其轉換成string字串列印出來。function obj2string o if typeof o obje...