1. 程式人生 > >Python之面向對象進階

Python之面向對象進階

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之面向對象進階