[問題] 一個很基本的問題

看板Python作者 ( ...)時間15年前 (2010/04/10 05:30), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我發現一些小問題 .. 今天如果我要操作兩個變數 a,b 如下 a,b=1,2 a=b a,b=3,4 print a,b 會輸出 : 3 4 .. (沒問題) 可是如果今天是 List: c,d = [1,2], [3,4] c = d c[0]='a' d[1]='b' print c, d 會輸出 : ['a', 'b'] ['a', 'b'] 這樣讓我感覺 List c d 內的元素互相 "參照" 了對方 .. 所以變成了同樣的變數 .. 當然,這個狀況可以由此改進 ... c = lsit(d) ... 如此就沒問題了 但是, 同樣的狀況卻發生在自己定義的 Class 所產生的物件之間 class C: "A test Class" def __init__(self,val): self.val = val e, f = C(1), C(2) e=f e.val = 3 print e.val, f.val 會輸出 : 3 3 這樣感覺是 f 並非將其內的元素 copy 一份到 e 裡面 .... 我嘗試去找了類似 C++ 複寫 operator = 的方法來處理這樣的問題 ... 之前有大大告訴我來研究 __set__ 。並且 __set__ 伴隨著 __get__ 經常會成對出現在文章裡面 ..... 但是我完全看不懂這兩個東西真正實質操作的意義阿 @@ .... 網路上面寫的例子與資源也很少, 還想請各位指點迷津 ~ 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 98.201.60.113 ※ 編輯: anrris 來自: 98.201.60.113 (04/10 05:47)

04/10 06:16, , 1F
一般list是用參考的, 要像int那樣用請查deepcopy
04/10 06:16, 1F
文章代碼(AID): #1BlvnkyC (Python)
討論串 (同標題文章)
文章代碼(AID): #1BlvnkyC (Python)