国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

瀏覽:126日期: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以后,內(nèi)存中就有了兩個對象(綠色字是對象內(nèi)部的屬性和方法),一個是CC,一個是dd,

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

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

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

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

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

標簽: Python 編程
主站蜘蛛池模板: 天气| 乾安县| 呼玛县| 滨海县| 兰坪| 延长县| 罗田县| 行唐县| 绥宁县| 鞍山市| 淅川县| 镇巴县| 平昌县| 武宣县| 镶黄旗| 昌乐县| 绥滨县| 五大连池市| 弥渡县| 阿合奇县| 东莞市| 兴化市| 聂荣县| 雅江县| 永济市| 沙湾县| 光山县| 长岭县| 静海县| 格尔木市| 永定县| 达尔| 花莲市| 遂川县| 镇平县| 西乌珠穆沁旗| 通江县| 商都县| 富源县| 保靖县| 邹城市|