[問題] 整數和字串literal的問題

作者: LessonWang (橘白Cat)   2017-06-25 10:58:25
在看python入門書實作時有個問題一直很納悶
a = 6
b = "string"
c = a.__str__()
d = b.__str__()
e = 6.__str__()
f = "string".__str__()
g = int(6).__str__()
程式碼如上
我的問題如下
1.為何平平都是字面值literal 字串字面值可以有__str__()方法 而整數字面值卻沒有 就如同變數e會出錯 變數f卻沒有
我的想法是整數字面值沒有構造一個int物件 而字串字面值有構造一個str物件 然後這物件繼承object這個原生物件的__str__()方法並且覆寫它
這樣的觀念是對的嗎 如果對的話
那麼為什麼整數字面值卻沒有構造呢
可以有完整的解釋嗎
講一下python內部的實作細節
2.當把整數或字串賦值給變數a和b 這時候不管是整數還是字串 都有構造int及str物件的參考給變數a和b 所以可以調用其物件的__str__()方法
這樣是對的觀念嗎
3.使用int函數是不是就等同於構造了int物件 所以如同變數g就不會有錯誤
作者: mikapauli (桜花)   2017-06-25 11:06:00
(6).__str__python認為那是小數點
作者: LessonWang (橘白Cat)   2017-06-25 12:10:00
那這樣不會誤認為長度為1的tuple嗎還是說(6,)這樣才會是tuple (6)只是單純的整數
作者: uranusjr (←這人是超級笨蛋)   2017-06-25 12:23:00
Tuple 的關鍵是逗號, 括弧只是 delimiter
作者: mikapauli (桜花)   2017-06-26 11:36:00
a = 1, 2, 3

Links booklink

Contact Us: admin [ a t ] ucptt.com