[問題] 用class包裝後return不到想要的值

作者: zxsaqw12 (雷蒙尼)   2018-05-09 11:59:59
目前因為興趣在自學,基礎不是很好。(以前沒程式經驗)
近期在做爬蟲的練習,
有重複賦值的需求,但發現用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
是不是我哪裡有天大的錯誤認知阿,
我需要重新複習哪一塊呢?
感謝各位。
作者: handsomeLin (DoGLin)   2018-05-09 12:10:00
你建立instance的時候用的是a b兩個值,你改原先兩個值當然不會造成改動,除非你用的是reference type的東西btw, 其實這跟class一點關係都沒有
作者: zxsaqw12 (雷蒙尼)   2018-05-09 12:13:00
對噎我剛剛發現把test=test()拿掉修改後就沒有這個問題
作者: handsomeLin (DoGLin)   2018-05-09 12:17:00
比如說 test1 = ‘a’ a = test1 之後你更動test1的值 a 還是’a’ 你可能要了解一下 = 的意義
作者: zxsaqw12 (雷蒙尼)   2018-05-09 12:33:00
感謝感謝
作者: justoncetime (台北叢林好冷~)   2018-05-10 10:11:00
「0為阿拉伯數字,O為英文字母」為啥不用Inconsolata之類的字體 ='= (考題範例)抱歉回錯了 Orz 必要可以刪除

Links booklink

Contact Us: admin [ a t ] ucptt.com