Python自定義類的成員並不一直是所有物件共享的
在Python中,變數不直接儲存值,而是儲存值的引用。列表、元組、字典、集合以及其他容器類物件中的元素也是儲存值的引用。物件中的成員也是儲存的引用。
自定義類的資料成員是該類所有物件共有的,既可以通過類訪問,也可以通過該類任意物件進行訪問。
如果通過類把成員的值進行了修改,該類物件都能得到體現。然而,如果通過其中某個物件修改了value的值,不會影響類和該類其他物件,因為這樣實際上是修改了物件中成員的引用。
如果類的資料成員是可變序列,並且通過可變序列自身的原地修改方法或者下標方式修改部分元素,那麼通過類或者該類任意物件都可以實現統一的影響。
為了便於理解類和物件的記憶體管理,可以開啟這個網址http://pythontutor.com/live.html#mode=edit,然後輸入程式碼觀察記憶體的使用的變化。例如,剛建立類和物件時,
修改t1.value的值之後,t1.value不再共享類的資料成員。
修改T.value之後,不影響已改變的t1.value,並且t2.value仍然共享類的資料成員。
類似地,當類成員value為列表[1,2,3]時,相應的一系列修改之後,記憶體佈局如圖,不管是通過類還是通過該類的物件,使用列表自身的原地修改方法或者下標的形式,修改的都是同一個列表。
自定義類中的方法也遵守同樣的規則。
溫馨提示
關注本公眾號“Python小屋”,通過選單“最新資源”==>“歷史文章”可以快速檢視分專題的800篇技術文章列表,通過“最新資源”==>“微課專區”可以免費觀看300節Python微課,通過“最新資源”==>“培訓動態”可以檢視近期Python培訓安排,通過“最新資源”==>“教學資源”可以檢視Python教學資源。
--------董付國老師Python系列圖書--------
1)《Python程式設計(第2版)》清華大學出版社
2)《Python可以這樣學》清華大學出版社
3)《Python程式設計基礎(第2版)》清華大學出版社
4)《中學生可以這樣學Python》清華大學出版社,配套微課:《中學生可以這樣學Python》84節微課免費觀看地址
5)《Python程式設計開發寶典》清華大學出版社
6)《玩轉Python輕鬆過二級》清華大學出版社
7)《Python程式設計基礎與應用》機械工業出版社
8)《Python程式設計實驗指導書》清華大學出版社(預計2019年3月出版)
9)《Python程式設計基礎與案例集錦(中學版)》電子工業出版社(2019年3月出版)
“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語言的課程群建設探討與實踐
2000頁Python系列PPT分享九:(GUI程式設計)(122頁)
Python實驗專案1例:使用程式池統計指定範圍內素數的個數
(PPT)Python程式設計課程教學內容組織與教學方法實踐
相關文章
- VS2005入門之類關係、自定義事件、共享成員事件
- 【python】類的特殊成員Python
- 物件導向類成員物件
- 【python】物件導向之類成員(屬性)Python物件
- 深入理解python物件導向-類特殊成員Python物件
- C++派生類物件訪問基類的protected成員C++物件
- Python基礎(二十):物件導向“類”第三課——類成員Python物件
- 內部類中的成員的定義和使用
- (譯) javascript中所有事物並不都是物件JavaScript物件
- Python 多程式的自定義共享資料型別Python資料型別
- python之成員(物件導向)Python物件
- Python的靜態方法和類成員方法Python
- python中物件導向_類_物件的概念與定義Python物件
- 對於靜態成員來說是類的建構函式,對於例項成員是類的原型物件。函式原型物件
- Python實用技法第13篇:對自定義類物件排序:attrgetterPython物件排序
- C++中的成員物件C++物件
- python基礎 python類的成員和裝飾器Python
- 類中成員函式宣告後面的const的含義!函式
- Java的靜態成員類Java
- 給Django的Admin新增自定義Action 並移除需要選擇物件的限制Django物件
- C++類中的常成員和靜態成員C++
- C++共享之道:用extern實現原始檔變數與類成員函式的巧妙共享C++變數函式
- Java的自定義異常類Java
- 類的靜態成員變數和普通成員變數該怎樣去區別定義變數
- 全網最適合入門的物件導向程式設計教程:06 類和物件的Python實現-自定義類的資料封裝物件程式設計Python封裝
- 集合框架-HashSet儲存字串、自定義物件並遍歷框架字串物件
- 全網最適合入門的物件導向程式設計教程:03 類和物件的Python實現-為自定義類新增屬性物件程式設計Python
- Python 3.x自定義迭代器物件Python物件
- c++類的靜態成員C++
- C++:類的成員函式C++函式
- C++:類的靜態成員C++
- 關於Java中類的成員Java
- C++ 類的靜態成員C++
- c#之arraylist類的成員C#
- 類,物件,成員變數和區域性變數,匿名物件物件變數
- Python關於反射和類的特殊成員方法詳解Python反射
- 物件資料成員的初始值物件
- 類别範本及其成員函式的定義及注意事項函式