久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

python - 類 類對象 賦值后的分別變化,及刪除后為什么還有值

瀏覽:123日期:2022-09-07 10:38:17

問題描述

class CC:? ? def setXY(self,x,y):? ? ? ? self.x=x? ? ? ? self.y=y? ? def printXY(self):? ? ? ? print(self.x,self.y)dd=CC()print(dd.__dict__) ? ? ? ? ? ? ? ? ? ? ? ? # {} ?#對象CC()的所有成員print(CC.__dict__) ? ? ? ? ? ? ? ? ? ? ? #{’__weakref__’: <attribute ’__weakref__’ of ’CC’ objects>, ’__doc__’: None, ’__dict__’: <attribute ’__dict__’ of ’CC’ objects>, ’printXY’: <function CC.printXY at 0x0000000000A50268>, ’__module__’: ’__main__’, ’setXY’: <function CC.setXY at 0 ? #輸出類CC的所有成員dd.setXY(4,5)print(dd.__dict__) ? ? ? ? ? ? ? ? ? ? ? #{’y’: 5, ’x’: 4}#賦值后類對象有值了print(CC.__dict__) ? ? ? ? ? ? ? ? ? ? ? #{’printXY’: <function CC.printXY at 0x0000000001160268>, ’__module__’: ’__main__’, ’__dict__’: <attribute ’__dict__’ of ’CC’ objects>, ’__weakref__’: <attribute ’__weakref__’ of ’CC’ objects>, ’__doc__’: None, ’setXY’: <function CC.setXY at 0x00000000011601E0>}#賦值后沒變del CC#ee=CC() ? NameError: name ’CC’ is not defineddd.printXY() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 4 5

第一點是那個self的作用,第二點是為賦值后撒類對象變化了而類卻沒變

問題解答

回答1:

python - 類 類對象 賦值后的分別變化,及刪除后為什么還有值

python中一切皆對象,class也是對象的一種,

如上圖,當你實例化CC以后,內存中就有了兩個對象(綠色字是對象內部的屬性和方法),一個是CC,一個是dd,

當你執行dd.setXY(4,5)時,self就被設置為dd,因為setXY不存在于dd中,所以解釋器沿著父類往上找,在CC中找到了setXY并執行,self,即dd內部就多了兩個成員x和y,

解釋器是怎么知道dd的父類是CC呢?答案是,dd.__class__

當你刪除了CC以后,其實你只是刪除了CC這個變量而已,,并沒有刪除類CC所占有的內存,因為dd還依舊存在的,dd還通過屬性__class__引用著類CC(python內存管理是基于引用計數的)

因此只是無法通過變量CC找到類而已,但是你可以通過dd.__class__找到,

因此,你可以這樣寫,ee = dd.__class__()

標簽: Python 編程
主站蜘蛛池模板: 磐石市| 松溪县| 古蔺县| 宜宾市| 洞口县| 德保县| 秦安县| 宜章县| 溆浦县| 北票市| 霍城县| 宜川县| 汝阳县| 抚远县| 那坡县| 红原县| 太仆寺旗| 彭山县| 巴楚县| 黄石市| 临泽县| 镇远县| 鹿泉市| 综艺| 桓台县| 阳信县| 开平市| 安溪县| 溧水县| 沛县| 基隆市| 南部县| 通海县| 攀枝花市| 孟州市| 固阳县| 泸西县| 右玉县| 察哈| 利津县| 靖远县|