我試圖用Python來完成某些工作,但在互聯網上找不到有關這方面的信息,所以這裏是我的問題。如何在不復制對象的情況下將var添加到Python列表中?
有了這個示例代碼:
a = 5
b = [a]
我需要B [0]是一個指針引用一個。目前如果我做
b[0] = 7
a.var仍然是5,如果我將值設置爲b [0],a保持不變。
我想知道是否有任何方式在Python中存儲一個數組中的對象而不復制這個,所以如果我修改一個我也修改另一個。
編輯一個
我想澄清一個好一點什麼,我試圖完成的,所以也許我能找到真正的答案。
我有一個像
class Foo(object):
def __init__(self):
self.var = 7
自定義類我也有像這樣的列表:
myList = [Foo()]
我真正的問題是在這裏:
在一些地方的代碼,我需要做以下任務:
self.foo = myList[0]
然後,當我嘗試訪問此foo var時,我注意到這從來沒有從原始實例更新。所以基本上這就是我需要的。
編輯兩個
所有的答案是正確的。在我的任務的每一步中使用id(var)我都可以驗證Object始終是相同的,所以錯誤必須在其他地方。感謝所有人的幫助,我希望這篇文章可以幫助未來的其他人。
對不起,整數是不可變的。當'a'引用一個int時,修改它的唯一方法就是執行'a = some_other_value'。 – Kevin 2014-09-23 19:22:42
在Python中,賦值永遠不會複製對象;變量都是引用,並且賦值重新引用引用。查看[Python執行模型](https://docs.python.org/2/reference/executionmodel.html)和[從C++角度看Python變量名的語義](http://rg03.wordpress.com/2007/04/21 /語義的-蟒-可變名稱-從-AC-透視/)。 – user2357112 2014-09-23 19:23:27
這只是一個例子,我實際上需要一個OBJECT而不是一個整數 – 2014-09-23 19:23:28