我意識到與此相似的問題已經被問到,雖然不完全是這樣。在python中創建拷貝構造函數是否有體面的方法?
我想爲我的類的構造函數有一個可選參數,如果它是我的類的實例,將被複制。例如,像(我知道這個代碼不工作!):
class Foo(object):
def __init__(self, foo=None):
self.x = None
self.y = None
self.z = None
if foo is not None and isinstance(foo, Foo):
self = copy.deepcopy(foo)
a = Foo()
a.x = 1
a.y = 2
a.z = 3
b = Foo(a)
print b.x
print b.y
print b.z
我知道有這幾個實用的解決方案。我可以根據foo的相應屬性的值來設置自己的每個屬性,但這會非常煩人,因爲我的類具有許多屬性。或者我可以簡單地使用do:
b = copy.deepcopy(a)
......但我寧願不,如果這是可能的。我也希望避免重寫__new__
。
python中是否真的沒有像樣的方法來創建複製構造函數?
爲什麼不你想使用b = copy.deepcopy(a)?我的意思是,如果它可以工作,並且不需要再寫入比b = Foo(a)更多的行.... – DGH
那麼,我想我的手指仍然交叉,複製構造函數是可行的。坦率地說,爲什麼不呢?這不像是一個非常不尋常的要求。人們會認爲所有面向對象的語言都會有這個特性。 – carmenism
爲什麼它不是一個功能?因爲它只是語法糖,用不同的方式來表達完全相同的東西。只要功能存在只用一行非常簡單的代碼就可以進行深層複製,爲什麼它是否是「構造函數」呢? – DGH