[問題] 新手物件導向問題

看板Python作者 (SONG-SONG)時間8年前 (2017/05/04 20:35), 8年前編輯推噓5(5013)
留言18則, 7人參與, 最新討論串1/1
狀況1 >>> a=3 >>> b=a >>> a=4 >>> b 3 狀況2 >>> a=[1,2,3] >>> b=a >>> a[0]=7 >>> b [7, 2, 3] 問一下各位高手 狀況1 b的值 為何不會因a的改變 而改變 還是狀況1的a不是物件呢? 希望高手解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.167.17 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1493901341.A.EFF.html

05/04 21:11, , 1F
你的狀況1第二行是不是想打a=b?
05/04 21:11, 1F

05/04 21:13, , 2F
抱歉,是b=a?
05/04 21:13, 2F

05/04 21:18, , 4F
因為是淺複製。用deepcopy就不會了。
05/04 21:18, 4F
※ 編輯: me8z7gnk (36.235.133.51), 05/04/2017 22:16:15

05/04 22:16, , 5F
謝謝S大 已改 謝謝你貼的文章
05/04 22:16, 5F

05/04 22:22, , 6F
謝謝S大 原來一開始的a跟b都是名稱,明白了,謝謝
05/04 22:22, 6F

05/04 22:22, , 7F
謝謝i大 我會去看看淺複製的
05/04 22:22, 7F

05/04 23:55, , 8F
為什麼會? 請吧a b 想成是標籤
05/04 23:55, 8F

05/04 23:55, , 9F
3 跟4個別是存在記憶體內。永遠不會改變
05/04 23:55, 9F

05/05 02:16, , 10F
我怎麼覺得這跟物件導向無關啊...
05/05 02:16, 10F

05/05 02:18, , 11F
a[0]=7實際上是 a.__setitem__(0, 7) 和 a=4 本質不同
05/05 02:18, 11F

05/05 02:19, , 12F
4這個int 並沒有提供方法讓你去改裡面的值
05/05 02:19, 12F

05/05 06:12, , 14F
pythontutor提到一個動畫解釋這個問題,把程式碼貼上執行
05/05 06:12, 14F

05/05 11:43, , 15F
是 OOP 沒錯, keyword 是 mutable & immutable objects
05/05 11:43, 15F

05/05 23:44, , 16F
謝謝 bibo9901跟zerof
05/05 23:44, 16F

05/05 23:44, , 17F
問過才知道 物件原來有mutable & immutable兩種類型
05/05 23:44, 17F

05/05 23:44, , 18F
會在試試 ides13 所提到的網站
05/05 23:44, 18F
文章代碼(AID): #1P2o0Tx_ (Python)
文章代碼(AID): #1P2o0Tx_ (Python)