作者zxsaqw12 (雷蒙尼)
看板Python
標題[問題] 用class包裝後return不到想要的值
時間Wed May 9 11:59:59 2018
目前因為興趣在自學,基礎不是很好。(以前沒程式經驗)
近期在做爬蟲的練習,
有重複賦值的需求,但發現用class包裝後,
卻只會拿到第一次的結果。
(雖然用別的方法可以解決)
但我自己本身想不通為什麼會這樣,也不知道該打什麼關鍵字去澄清這個。
所以想請各位前輩幫忙看看我的觀念哪裡錯誤了。
程式碼如下:
a="a"
b="b"
class TEST():
def __init__(self,test1,test2):
self.test1=test1
self.test2=test2
def test():
test1 = a
test2 = b
return TEST(test1,test2)
test=test()
print (test.test1)
print (test.test2)
a="A"
b="B"
print (test.test1)
print (test.test2)
###Output###
a
b
a
b
############
以上。
結果不是想像中的,
a
b
A
B
是不是我哪裡有天大的錯誤認知阿,
我需要重新複習哪一塊呢?
感謝各位。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.126.141
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1525838401.A.9D7.html
推 handsomeLin: 你建立instance的時候用的是a b兩個值,你改原先兩 05/09 12:10
→ handsomeLin: 個值當然不會造成改動,除非你用的是reference type 05/09 12:10
→ handsomeLin: 的東西 05/09 12:10
→ handsomeLin: btw, 其實這跟class一點關係都沒有 05/09 12:12
→ zxsaqw12: 對噎我剛剛發現把test=test()拿掉修改後就沒有這個問題 05/09 12:13
推 handsomeLin: 比如說 test1 = ‘a’ a = test1 之後你更動test1的 05/09 12:17
→ handsomeLin: 值 a 還是’a’ 你可能要了解一下 = 的意義 05/09 12:17
→ zxsaqw12: 感謝感謝 05/09 12:33
→ justoncetime: 「0為阿拉伯數字,O為英文字母」為啥不用Inconsolat 05/10 10:11
→ justoncetime: a之類的字體 ='= (考題範例) 05/10 10:12
→ justoncetime: 抱歉回錯了 Orz 必要可以刪除 05/10 10:13