屬性分爲實例屬性與類屬性this
方法分爲普通方法,類方法,靜態方法spa
一:屬性:對象
儘可能把須要用戶傳入的屬性做爲實例屬性,而把同類都同樣的屬性做爲類屬性。實例屬性在每創造一個實例時都會初始化一遍,不一樣的實例的實例屬性可能不一樣,不一樣實例的類屬性都相同。從而減小內存。內存
1:實例屬性:ci
最好在__init__(self,...)中初始化string
內部調用時都須要加上self.it
外部調用時用instancename.propertynameclass
2:類屬性:test
在__init__()外初始化方法
在內部用classname.類屬性名調用
外部既能夠用classname.類屬性名又能夠用instancename.類屬性名來調用
3:私有屬性:
1):單下劃線_開頭:只是告訴別人這是私有屬性,外部依然能夠訪問更改
2):雙下劃線__開頭:外部不可經過instancename.propertyname來訪問或者更改
實際將其轉化爲了_classname__propertyname
二:方法
1:普通類方法:
def fun_name(self,...):
pass
外部用實例調用
2:靜態方法:@staticmethod
不能訪問實例屬性!!! 參數不能傳入self!!!
與類相關可是不依賴類與實例的方法!!
3:類方法:@classmethod
不能訪問實例屬性!!! 參數必須傳入cls!!!
必須傳入cls參數(即表明了此類對象-----區別------self表明實例對象),而且用此來調用類屬性:cls.類屬性名
*靜態方法與類方法均可以經過類或者實例來調用。其兩個的特色都是不可以調用實例屬性
e.g1:
總結:類屬性與類方法是類固有的方法與屬性,不會由於實例不一樣而改變,寫他們的目的是減小多實例時所創造出來的內存空間,加快運行速度。