2
我是繼承字典,但遇到了一個問題setitem其中一個賦值工作,但另一個賦值不工作。我煮它歸結爲以下幾個基本問題:繼承python的字典,覆蓋__setitem__不保留新值
class CustomDict(dict):
def __setitem__(self, key, value):
super(CustomDict, self).__setitem__(key, value)
測試1失敗:
data = {"message":"foo"}
CustomDict(data)["message"] = "bar"
print CustomDict(data) # Expected "{'message': 'bar'}". Actual is "{'message': 'foo'}".
print data # Expected "{'message': 'bar'}". Actual is "{'message': 'foo'}".
測試2成功:
data = CustomDict({"message":"foo"})
data["message"] = "bar"
print CustomDict(data) # Expected "{'message': 'bar'}". Actual matches expected.
print data # Expected "{'message': 'bar'}". Actual matches expected.
我在網上看了,但不能告訴是否子類的構造函數複製字典,以便在字典的不同實例上執行操作。有什麼建議?
謝謝你,斯內德。它是一個深層的副本,以及關於在python代碼中查找字典的__init__的位置的建議? –
這不是一個深層複製。 dict的代碼非常複雜,有2500行C.如果你想閱讀它,它在Objcets/dictobject.c中的一個Python源代碼發行版中。 –
好的,非常感謝您的信息 –