例如
class Demo:
def __init__(self, i):
self.i = i
def __str__(self):
return str(self.i)
def __del__(self):
print("bye-bye " + self.__str__())
def hello(self):
print("hello " + self.__str__())
a = Demo(22)
a.hello()
a = Demo(33)
a.hello()
a = Demo(44)
a.hello()
a = Demo(55)
a.hello()
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:delm01.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

第 8 行到第 9 行,這裡是 __del__() 定義的地方
def __del__(self):
print("bye-bye " + self.__str__())我們只有使用變數 (variable) a 一個名稱,利用建構子 Demo() 建立物件後呼叫 hello() ,然後重新呼叫 Demo() 建立另一個 Demo 型態的物件,我們可以看到直譯器主動呼叫 __del__() ,印出 "bye-bye" 的訊息。
最後程式結束執行前,直譯器同樣主動呼叫最後建立物件解構子,完全釋放所使用的記憶體空間。
| 中英文術語對照 | |
|---|---|
| 建構子 | constructor |
| 物件 | object |
| 直譯器 | interpreter |
| 方法 | method |
| 解構子 | destructor |
| 改寫 | override |
| 變數 | variable |
參考資料
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/reference/datamodel.html
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/reference/datamodel.html
沒有留言:
張貼留言