我了解复制模块copy
与vs 之间的区别deepcopy
。我已经使用过copy.copy
并且copy.deepcopy
在成功之前使用过,但这是我第一次真正地重载__copy__
and __deepcopy__
方法。我已经用谷歌搜索看去,通过内置的Python模块查找的实例__copy__
和__deepcopy__
功能(例如sets.py
,decimal.py
和fractions.py
),但我仍然不能100%肯定我明白了它的权利。
这是我的情况:
我有一个配置对象。最初,我将使用一组默认值实例化一个配置对象。此配置将移交给其他多个对象(以确保所有对象都以相同的配置开始)。但是,一旦开始用户交互,每个对象都需要独立地调整其配置,而又不影响彼此的配置(对我来说,我需要对初始配置进行深入复制才能进行处理)。
这是一个示例对象:
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
提供适当行为的正确方法是什么?