Python 例項建立後更新類會發生什麼?

時間 2021-06-02 23:02:07

1樓:abbaangel

>>> class C1:

def m1(self):

print ' In m1'

def __del__(self): #加個這個函式,就能清楚的看到什麼時候被釋放掉

print 'del m1'

>>> i1 = C1()

>>> i1.m1()

In m1

>>> i1

<__main__.C1 instance at 0x03148300> #i1在這個位址上

>>> class C1:

def m2(self):

print ' In m2'

def __del__(self):

print 'del m2'

>>> i1

<__main__.C1 instance at 0x03148300> #i1還在這個位址上,新的類對他還沒有影響

>>> i1 = C1() #重新初始化新的類!

>>> i1 #再次檢視i1 時,可以看到先將原來的釋放掉,然後指定新的位置!

del m1 #釋放掉了

<__main__.C1 instance at 0x03174D28>

>>> i1.m2()

In m2 #是後來定義的函式

2樓:Qing Meng

Python中類也是物件。

i1這個物件還保持著C1這個物件的引用,所以即使把C1這個名字繫結到另外乙個類,C1原來繫結的類仍然存在。

3樓:阿飄

id(C1)和id(C2)不一樣說明這兩個類的位置不同吧

可以理解為有兩個不同的人你把某個人的名字剝奪了給另外乙個人但是那個人仍然存在只不過沒有名字了

為什麼 Python 3 中類可以直接呼叫例項方法,Python 2 中卻不行?

Manjusaka 靈劍 老大已經說了 3.0 移除了 unbound method 的概念,直接呼叫函式就被當做乙個普通函式處理 詳情參見 What s New In Python 3.0 曲奇 確實和直譯器的實現有關係。但我建議不要在這個方向上深究,鑽牛角尖無助於提公升程式設計功力。Python...

ubuntu下建立python3虛擬環境報錯?

兩儀式 看專案flaskr下已生成py3venv資料夾,py3venv下有lib python3.4 但沒有bin資料夾和pip等包。剛接觸linux和python自帶的venv工具 我也不知道如何解決。本地window7下,python3.5.cmd執行 python3 venv py3venv。...

SQL和Python 哪個更容易自學

公尺穀 其實很多程式語言可以操作SQL,Python中有DB API 資料庫應用程式設計介面 也有PyMySQL等操作SQL的第三方庫。答應我 沒有選擇學習Python,你不要後悔。SQL是運算元據庫的工具,而Python對於大資料 資料分析 人工智慧等方面,有這天然的優勢,也是更廣泛更貼近人類思維...