Python高級編程——15.新式類和經典類的區別

1.新式類對象可以直接通過__class__屬性獲取自身類型:type


2. 繼承搜索的順序發生了改變,經典類多繼承屬性搜索順序: 先深入繼承樹左側,再返回,開始找右側;新式類多繼承屬性搜索順序: 先水平搜索,然後再向上移動

3. 新式類增加了__slots__內置屬性, 可以把實例屬性的種類鎖定到__slots__規定的範圍之中。

通常每一個實例都會有一個__dict__屬性,用來記錄實例中所有的屬性和方法,也是通過這個字典,可以讓實例綁定任意的屬性

而__slots__屬性作用就是,當類C有比較少的變量,而且擁有__slots__屬性時,

類C的實例 就沒有__dict__屬性,而是把變量的值存在一個固定的地方。如果試圖訪問一個__slots__中沒有

的屬性,實例就會報錯。這樣操作有什麼好處呢?__slots__屬性雖然令實例失去了綁定任意屬性的便利,

但是因爲每一個實例沒有__dict__屬性,卻能有效節省每一個實例的內存消耗,有利於生成小而精

乾的實例。


4. 新式類增加了__getattribute__方法



Python 2.x中默認都是經典類,只有顯式繼承了object纔是新式類

Python 3.x中默認都是新式類,不必顯式的繼承object



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章