Python之面向對象進階
阿新 • • 發佈:2018-03-10
strong mage IT spa 包括 self 不同 復制 print
Python之面向對象進階
進階有:Python 類的成員、成員修飾符、類的特殊成員。
一、類的成員
類的成員可以分為三大類:字段、方法和屬性。
註:所有成員中,只有普通字段的內容保存對象中,即:根據此類創建了多少對象,在內存中就有多少個普通字段。而其他的成員,則都是保存在類中,即:無論對象的多少,在內存中只創建一份。
1、字段
字段包括:普通字段和靜態字段,他們在定義和使用中有所區別,而最本質的區別是內存中保存的位置不同,
- 普通字段屬於對象
- 靜態字段屬於類
1 class Province: 2 3 # 靜態字段 4 country = ‘中國字段的定義和使用‘ 5 6 def __init__(self, name): 7 8 # 普通字段 9 self.name = name 10 11 12 # 直接訪問普通字段 13 obj = Province(‘河北省‘) 14 print obj.name 15 16 # 直接訪問靜態字段 17 Province.country 18 19 字段的定義和使用
由上述代碼可以看出【普通字段需要通過對象來訪問】【靜態字段通過類訪問】,在使用上可以看出普通字段和靜態字段的歸屬是不同的。其在內容的存儲方式類似如下圖:
由上圖可是:
- 靜態字段在內存中只保存一份
- 普通字段在每個對象中都要保存一份
應用場景: 通過類創建對象時,如果每個對象都具有相同的字段,那麽就使用靜態字段
2、方法
方法包括:普通方法、靜態方法和類方法,三種方法在內存中都歸屬於類,區別在於調用方式不同。
- 普通方法:由對象調用;至少一個self參數;執行普通方法時,自動將調用該方法的對象賦值給self;
- 類方法:由類調用; 至少一個cls參數;執行類方法時,自動將調用該方法的類復制給cls;
- 靜態方法:由類調用;無默認參數;
Python之面向對象進階