Python之物件導向進階

來源:互聯網
上載者:User

標籤:obj   count   定義   使用   image   blog   ima   post   區別   

  Python之物件導向進階

    進階有:Python 類的成員、成員修飾符、類的特殊成員。

一、類的成員

類的成員可以分為三大類:欄位、方法和屬性。

註:所有成員中,只有普通欄位的內容儲存對象中,即:根據此類建立了多少對象,在記憶體中就有多少個普通欄位。而其他的成員,則都是儲存在類中,即:無論對象的多少,在記憶體中只建立一份。

1、欄位

欄位包括:普通欄位和靜態欄位,他們在定義和使用中有所區別,而最本質的區別是記憶體中儲存的位置不同,

  • 普通欄位屬於對象
  • 靜態欄位屬於
 1 class Province: 2  3     # 靜態欄位 4     country = ‘中國‘ 5  6     def __init__(self, name): 7  8         # 普通欄位 9         self.name = name10 11 12 # 直接存取普通欄位13 obj = Province(‘河北省‘)14 print obj.name15 16 # 直接存取靜態欄位17 Province.country18 19 欄位的定義和使用
欄位的定義和使用

由上述代碼可以看出【普通欄位需要通過對象來訪問】【靜態欄位通過類訪問】,在使用上可以看出普通欄位和靜態欄位的歸屬是不同的。其在內容的儲存方式類似如:

由可是:

  • 靜態欄位在記憶體中只儲存一份
  • 普通欄位在每個對象中都要儲存一份

應用情境: 通過類建立對象時,如果每個對象都具有相同的欄位,那麼就使用靜態欄位

2、方法

方法包括:普通方法、靜態方法和類方法,三種方法在記憶體中都歸屬於類,區別在於調用方式不同。

  • 普通方法:由對象調用;至少一個self參數;執行普通方法時,自動將調用該方法的對象賦值給self
  • 類方法:由調用; 至少一個cls參數;執行類方法時,自動將調用該方法的複製給cls
  • 靜態方法:由調用;無預設參數;

 

Python之物件導向進階

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.