今天看到個有趣的文章裡面談到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...