私は違いを理解copy
対deepcopy
コピーモジュール内を。私は以前は成功裏に使用copy.copy
しcopy.deepcopy
てきましたが、__copy__
および__deepcopy__
メソッドのオーバーロードについて実際に行ったのはこれが初めてです。私はすでにを通じて周りGoogleで検索して見てきたのインスタンスを探すためにPythonモジュールを内蔵__copy__
し、__deepcopy__
機能(例えばsets.py
、decimal.py
、およびfractions.py
)が、私はまだ100%でないことを確認、私はそれを右に持っているんです。
これが私のシナリオです:
設定オブジェクトがあります。最初に、デフォルトの値のセットを使用して1つの構成オブジェクトをインスタンス化します。この構成は、他の複数のオブジェクトに渡されます(すべてのオブジェクトが同じ構成で開始されるようにするため)。ただし、ユーザーインタラクションが開始すると、各オブジェクトは、互いの構成に影響を与えずに、その構成を個別に微調整する必要があります(つまり、手渡しするために、初期構成のディープコピーを作成する必要があると言います)。
次にオブジェクトの例を示します。
class ChartConfig(object):
def __init__(self):
#Drawing properties (Booleans/strings)
self.antialiased = None
self.plot_style = None
self.plot_title = None
self.autoscale = None
#X axis properties (strings/ints)
self.xaxis_title = None
self.xaxis_tick_rotation = None
self.xaxis_tick_align = None
#Y axis properties (strings/ints)
self.yaxis_title = None
self.yaxis_tick_rotation = None
self.yaxis_tick_align = None
#A list of non-primitive objects
self.trace_configs = []
def __copy__(self):
pass
def __deepcopy__(self, memo):
pass
このオブジェクトにcopy
およびdeepcopy
メソッドを実装して適切な動作を確実にcopy.copy
しcopy.deepcopy
てくれる正しい方法は何ですか?