作者me8z7gnk (SONG-SONG)
看板Python
標題[問題] 新手物件導向問題
時間Thu May 4 20:35:39 2017
狀況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://webptt.com/m.aspx?n=bbs/Python/M.1493901341.A.EFF.html
1F:推 shimachokong: 你的狀況1第二行是不是想打a=b? 05/04 21:11
2F:→ shimachokong: 抱歉,是b=a? 05/04 21:13
4F:推 ides13: 因為是淺複製。用deepcopy就不會了。 05/04 21:18
※ 編輯: me8z7gnk (36.235.133.51), 05/04/2017 22:16:15
5F:→ me8z7gnk: 謝謝S大 已改 謝謝你貼的文章 05/04 22:16
6F:→ me8z7gnk: 謝謝S大 原來一開始的a跟b都是名稱,明白了,謝謝 05/04 22:22
7F:→ me8z7gnk: 謝謝i大 我會去看看淺複製的 05/04 22:22
8F:推 timTan: 為什麼會? 請吧a b 想成是標籤 05/04 23:55
9F:→ timTan: 3 跟4個別是存在記憶體內。永遠不會改變 05/04 23:55
10F:→ minikai: 我怎麼覺得這跟物件導向無關啊... 05/05 02:16
11F:→ bibo9901: a[0]=7實際上是 a.__setitem__(0, 7) 和 a=4 本質不同 05/05 02:18
12F:→ bibo9901: 4這個int 並沒有提供方法讓你去改裡面的值 05/05 02:19
14F:→ ides13: pythontutor提到一個動畫解釋這個問題,把程式碼貼上執行 05/05 06:12
15F:推 zerof: 是 OOP 沒錯, keyword 是 mutable & immutable objects 05/05 11:43
16F:→ me8z7gnk: 謝謝 bibo9901跟zerof 05/05 23:44
17F:→ me8z7gnk: 問過才知道 物件原來有mutable & immutable兩種類型 05/05 23:44
18F:→ me8z7gnk: 會在試試 ides13 所提到的網站 05/05 23:44