在Python中,變量不直接存儲值,而是存儲值的引用。列表、元組、字典、集合以及其他容器類對象中的元素也是存儲值的引用。對象中的成員也是存儲的引用。
python一個類調用另一個類的方法,自定義類的數據成員是該類所有對象共有的,既可以通過類訪問,也可以通過該類任意對象進行訪問。
python內置對象有哪些,如果通過類把成員的值進行了修改,該類對象都能得到體現。然而,如果通過其中某個對象修改了value的值,不會影響類和該類其他對象,因為這樣實際上是修改了對象中成員的引用。
如果類的數據成員是可變序列,并且通過可變序列自身的原地修改方法或者下標方式修改部分元素,那么通過類或者該類任意對象都可以實現統一的影響。
為了便于理解類和對象的內存管理,可以打開這個網址http://pythontutor.com/live.html#mode=edit,然后輸入代碼觀察內存的使用的變化。例如,剛創建類和對象時,
修改t1.value的值之后,t1.value不再共享類的數據成員。
修改T.value之后,不影響已改變的t1.value,并且t2.value仍然共享類的數據成員。
類似地,當類成員value為列表[1,2,3]時,相應的一系列修改之后,內存布局如圖,不管是通過類還是通過該類的對象,使用列表自身的原地修改方法或者下標的形式,修改的都是同一個列表。
自定義類中的方法也遵守同樣的規則。
如果修改了對象的成員引用之后,仍想訪問對象所屬類的成員,可以使用下面的方法。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态