1. 程式人生 > 實用技巧 >【Python基礎程式設計212 ● 面向物件 ● 面向物件案例:烤紅薯】

【Python基礎程式設計212 ● 面向物件 ● 面向物件案例:烤紅薯】


---------Python基礎程式設計---------

Author : AI菌


【內容講解】

1.__del__()是一個魔法方法,del前有兩個橫線,後也有兩個橫線
2.這個方法,當物件被刪除時,會自動被呼叫

【程式碼實現】

class Student:
    # 初始化方法,建立完物件後會自動被呼叫
    def __init__(self, name):
        print('__init__方法被呼叫')
        self.name = name

    # 當物件被刪除時,會自動被呼叫
    def __del__(self):
        print("__del__方法被呼叫")
        print("%s 被幹掉了..." % self.name)


# 建立物件
s1 = Student("robot")

# 刪除物件,自動呼叫__del__()方法
print("%d 被刪除1次" % id(s1))
del s1

print("--" * 10)

# 當有變數儲存了一個物件的引用時,此物件的引用計數就會加1;
# 當使用del() 刪除變數指向的物件時,則會減少物件的引用計數;
# 如果物件的引用計數不為1,那麼會讓這個物件的引用計數減1;
# 當物件的引用計數為0的時候,則物件才會被真正刪除(記憶體被回收)。
s2 = Student("rabbit") # s2的引用計數為1
a1 = s2 # s2的引用計數為2
a2 = s2 # s2的引用計數為3

print("%d 被刪除1次" % id(s2))
del s2 # s2的引用計數減1,為2

print("%d 被刪除1次" % id(a1))
del a1 # s2的引用計數減1,為1

# 引用計數為0的時候,物件會被真正刪除
# 此時呼叫__del__()方法
print("%d 被刪除1次" % id(a2))
del a2  # s2的引用計數減1,為0

【執行結果】

__init__方法被呼叫
3158148617048 被刪除1次
__del__方法被呼叫
robot 被幹掉了...
--------------------
__init__方法被呼叫
3158148618448 被刪除1次
3158148618448 被刪除1次
3158148618448 被刪除1次
__del__方法被呼叫
rabbit 被幹掉了...

【往期精彩】

▷【Python基礎程式設計196 ● 讀取檔案的4種方式】
▷【Python基礎程式設計197 ● 讀取檔案的4種方式】
▷【Python基礎程式設計198 ● 讀取檔案的4種方式】
▷【Python基礎程式設計199 ● Python怎麼讀/寫很大的檔案】

▷【Python基礎程式設計200 ● 讀取檔案的4種方式】
▷【Python基礎程式設計201 ● 讀取檔案的4種方式】
▷【Python基礎程式設計202 ● 讀取檔案的4種方式】
▷【Python基礎程式設計203 ● 讀取檔案的4種方式】

【加群交流】