引言:
python
類是對象的定義,而實例是「真正的實物」。
編程
class NewObjectType(bases): 'define NewObjectType class' class_sui
最簡單的狀況把類用做名稱空間。能夠把數據保存在變量中,對他們按名稱空間進行分組。函數
面向對象編程:ui
加強告終構化編程,實現了數據與動做的融合‘
spa
類屬性:code
屬性也是一個對象,擁有本身的屬性,能夠訪問,這造成了一個屬性鏈。
對象
沒有實例,方法不能被調用。面向對象編程
查看類有那些屬性:dir()、屬性__dict__class
特殊的類屬性:__name__, __doc__,__bases__,__dict__,__module__,__class__.變量
實例屬性:
經過調用類對象來建立實例 mc = Myclass().
若是定義了構造器,它不該該返回任何對象。
dir()也能夠打印實例屬性。
特殊的實力屬性__class__,__dict__.
給一個與類屬性同名的實例屬性賦值,會遮蔽類屬性。(在類屬性可變的狀況下,一切就不一樣了。)
類屬性的修改會影響到全部的實例。
綁定與方法調用:
self變量用於在類實例方法中引用方法所綁定的實例。
靜態方法和類方法;
staticmethod()和classmethod()內建函數。
使用函數修飾符。@staticmethod、@classmethod。
子類和派生:
OOP最強大的一個功能是使用一個已經定義好了的類,擴展它或對它進行修改。
super()內建方法,不但能找到基類方法,還能傳進self。
類、實例和其餘對象的內建函數:
isoubclass(sub, sup).布爾函數判斷一個類是另外一個類的子類或子孫類。第二個參數能夠是父類組成的元組。
isinstance(obj1, obj2)布爾函數判斷一個對象是不是另外一個給定類的實例或者子類的一個實例。
attr系列函數能夠在各類對象下工做,不限於類和實例。attr(obj, 'attr')
super()找出相應的父類。
vars()內建函數與dir()函數類似。