好的......這可能是一個愚蠢的問題......但我現在沒有找到答案!Python副本:如何繼承默認的複製行爲?
我需要實現一個對象的副本,爲此我想要複製所有屬性,除了一個或兩個我想完全控制副本的副本外。
這裏是對象的標準複製行爲:
>>> class test(object):
... def __init__(self, arg):
... self._a = arg
...
>>> t = test(123999)
>>> t._a
123999
>>> tc = copy.copy(t)
>>> tc._a
123999
這基本上意味着所有的屬性被複制。我想這樣做的是重新使用此行爲以下列方式:
>>> class test(object):
... def __init__(self, arga, argb):
... self._a = arga
... self._b = argb
...
... def __copy__(self):
... obj_copy = copy.copy(self) #NOT POSSIBLE OF COURSE => infinite recursion
... obj_copy._b = my_operation(obj_copy._b)
... return obj_copy
我希望你有一點:我想重新使用該對象的複製行爲,但鉤在我自己的操作。有沒有乾淨的方式來做到這一點(無需做for attr_name in dir(self): ...
)?
如果你是比較新的Python和你認爲你需要複製一個對象,你可能錯了,除非你能解釋一下到底爲什麼副本做一些事情,對象本身不能。 – msw 2010-07-15 08:06:25
我已經有一段時間了,我做了一些Python ...並相信我,我知道我必須複製這次! – sebpiq 2010-07-15 08:21:52