Python自定義類的成員並不一直是所有物件共享的

Python_小屋發表於2019-03-03

在Python中,變數不直接儲存值,而是儲存值的引用。列表、元組、字典、集合以及其他容器類物件中的元素也是儲存值的引用。物件中的成員也是儲存的引用。

自定義類的資料成員是該類所有物件共有的,既可以通過類訪問,也可以通過該類任意物件進行訪問。

640?wx_fmt=png


如果通過類把成員的值進行了修改,該類物件都能得到體現。然而,如果通過其中某個物件修改了value的值,不會影響類和該類其他物件,因為這樣實際上是修改了物件中成員的引用。

640?wx_fmt=png


如果類的資料成員是可變序列,並且通過可變序列自身的原地修改方法或者下標方式修改部分元素,那麼通過類或者該類任意物件都可以實現統一的影響。

640?wx_fmt=png


為了便於理解類和物件的記憶體管理,可以開啟這個網址http://pythontutor.com/live.html#mode=edit,然後輸入程式碼觀察記憶體的使用的變化。例如,剛建立類和物件時,

640?wx_fmt=png


修改t1.value的值之後,t1.value不再共享類的資料成員。

640?wx_fmt=png


修改T.value之後,不影響已改變的t1.value,並且t2.value仍然共享類的資料成員。

640?wx_fmt=png


類似地,當類成員value為列表[1,2,3]時,相應的一系列修改之後,記憶體佈局如圖,不管是通過類還是通過該類的物件,使用列表自身的原地修改方法或者下標的形式,修改的都是同一個列表。

640?wx_fmt=png


自定義類中的方法也遵守同樣的規則。

640?wx_fmt=png




溫馨提示

關注本公眾號“Python小屋”,通過選單“最新資源”==>“歷史文章”可以快速檢視分專題的800篇技術文章列表,通過“最新資源”==>“微課專區”可以免費觀看300節Python微課,通過“最新資源”==>“培訓動態”可以檢視近期Python培訓安排,通過“最新資源”==>“教學資源”可以檢視Python教學資源。

640?wx_fmt=png


--------董付國老師Python系列圖書--------

1)《Python程式設計(第2版)》清華大學出版社

640?wx_fmt=png


2)《Python可以這樣學》清華大學出版社

640?wx_fmt=png


3)《Python程式設計基礎(第2版)》清華大學出版社

640?wx_fmt=png

4)《中學生可以這樣學Python》清華大學出版社,配套微課:《中學生可以這樣學Python》84節微課免費觀看地址

640?wx_fmt=png


5)《Python程式設計開發寶典》清華大學出版社

640?wx_fmt=png


6)《玩轉Python輕鬆過二級》清華大學出版社

640?wx_fmt=png


7)《Python程式設計基礎與應用》機械工業出版社

640?wx_fmt=png


8)《Python程式設計實驗指導書》清華大學出版社(預計2019年3月出版)

640?wx_fmt=jpeg


9)《Python程式設計基礎與案例集錦(中學版)》電子工業出版社(2019年3月出版)

640?wx_fmt=png


《中學生可以這樣學Python》84節微課免費觀看地址

非計算機專業《Python程式設計基礎》教學參考大綱

計算機相關專業“Python程式設計”教學大綱(參考)

《Python程式設計》實驗指導書(30個實驗)

《Python程式設計基礎與應用》課後習題答案

Python課程期末考試程式設計題自動批卷原理與實現模板

“Python小屋”免費資源彙總(截至2018年11月28日)


系列教學PPT:

1900頁Python系列PPT分享一:基礎知識(106頁)

1900頁Python系列PPT分享二:Python序列(列表、元組、字典、集合)(154頁)

1900頁Python系列PPT分享三:選擇與迴圈結構語法及案例(96頁)

1900頁Python系列PPT分享四:字串與正規表示式(109頁)

1900頁Python系列PPT分享五:函式設計與應用(134頁)

1900頁Python系列PPT分享六:物件導向程式設計(86頁)

1900頁Python系列PPT分享七:檔案操作(132頁)

1900頁Python系列PPT分享八:異常處理結構與程式除錯、測試(70頁)

報告PPT(163頁):基於Python語言的課程群建設探討與實踐

報告PPT(123頁):Python程式設計基礎精要

2000頁Python系列PPT分享九:(GUI程式設計)(122頁)

Python實驗專案1例:使用程式池統計指定範圍內素數的個數

(PPT)Python程式設計課程教學內容組織與教學方法實踐


相關文章