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

看板Python作者 (雷蒙尼)時間6年前 (2018/05/09 12:00), 編輯推噓2(209)
留言11則, 3人參與, 6年前最新討論串1/1
目前因為興趣在自學,基礎不是很好。(以前沒程式經驗) 近期在做爬蟲的練習, 有重複賦值的需求,但發現用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

05/09 12:10, 6年前 , 1F
你建立instance的時候用的是a b兩個值,你改原先兩
05/09 12:10, 1F

05/09 12:10, 6年前 , 2F
個值當然不會造成改動,除非你用的是reference type
05/09 12:10, 2F

05/09 12:10, 6年前 , 3F
的東西
05/09 12:10, 3F

05/09 12:12, 6年前 , 4F
btw, 其實這跟class一點關係都沒有
05/09 12:12, 4F

05/09 12:13, 6年前 , 5F
對噎我剛剛發現把test=test()拿掉修改後就沒有這個問題
05/09 12:13, 5F

05/09 12:17, 6年前 , 6F
比如說 test1 = ‘a’ a = test1 之後你更動test1的
05/09 12:17, 6F

05/09 12:17, 6年前 , 7F
值 a 還是’a’ 你可能要了解一下 = 的意義
05/09 12:17, 7F

05/09 12:33, 6年前 , 8F
感謝感謝
05/09 12:33, 8F

05/10 10:11, 6年前 , 9F
「0為阿拉伯數字,O為英文字母」為啥不用Inconsolat
05/10 10:11, 9F

05/10 10:12, 6年前 , 10F
a之類的字體 ='= (考題範例)
05/10 10:12, 10F

05/10 10:13, 6年前 , 11F
抱歉回錯了 Orz 必要可以刪除
05/10 10:13, 11F
文章代碼(AID): #1Qyd91dN (Python)