作者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/cn.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