[問題] 一個很基本的問題
我發現一些小問題 ..
今天如果我要操作兩個變數 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
04/10 06:16, 1F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章