1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | a = 22 #1 print (a.__str__()) print ( type (a.__str__())) print () a = 22.0 #2 print (a.__str__()) print ( type (a.__str__())) print () a = "22" #3 print (a.__str__()) print ( type (a.__str__())) print () a = [ 22 ] #4 print (a.__str__()) print ( type (a.__str__())) # 《程式語言教學誌》的範例程式 # 檔名:cla06.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

第 1 組
1 2 3 | a = 22 #1 print (a.__str__()) print ( type (a.__str__())) |
a 為整數 (integer) ,其字串形式如同 "22" 。
第 2 組
6 7 8 | a = 22.0 #2 print (a.__str__()) print ( type (a.__str__())) |
a 為浮點數 (floating-point number) ,其字串形式如同 "22.0" 。
第 3 組
11 12 13 | a = "22" #3 print (a.__str__()) print ( type (a.__str__())) |
a 就是字串,字串形式也就是 "22" 。
第 4 組
16 17 18 | a = [ 22 ] #4 print (a.__str__()) print ( type (a.__str__())) |
a 為具有一個整數 22 的串列 (list) ,其字串形式如同 "[22]" 。
自行定義的類別預設的字串表達形式如下例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Demo: def __init__( self , i): self .i = i def hello( self ): print ( "hello" , self .i) a = Demo( 1122 ) a.hello() print () print (a.__str__()) # 《程式語言教學誌》的範例程式 # 檔名:cla07.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

由於預設的方式是印出類別名稱,實體所在的記憶體位址,這未必是我們想要的,因此我們可以視需要改寫 (override) __str__() 方法,如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Demo: def __init__( self , i): self .i = i def __str__( self ): return str ( self .i) def hello( self ): print ( "hello" , self .i) a = Demo( 1122 ) a.hello() print () print (a.__str__()) # 《程式語言教學誌》的範例程式 # 檔名:cla08.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

第 5 行到第 6 行
5 6 | def __str__( self ): return str ( self .i) |
我們簡單的讓 Demo 的 __str__() 回傳一個運算式 (expression) ,這個運算式為以實體屬性 (attribute) self.i 當成參數 (parameter) ,呼叫 (call) 內建函數 (function) str() , str() 回傳包含該數值的字串物件。
這裡,由於我們將 a 的 self.i 設定成整數 1122 ,因此字串形式為 "1122" 。
中英文術語對照 | |
---|---|
類別 | class |
方法 | method |
實體 | instance |
物件 | object |
字串 | string |
資料型態 | data type |
整數 | integer |
浮點數 | floating-point number |
串列 | list |
改寫 | override |
運算式 | expression |
屬性 | attribute |
參數 | parameter |
呼叫 | call |
函數 | function |
參考資料
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/compound_stmts.html
沒有留言:
張貼留言