我理解复制模块中复制与深度复制之间的区别.我成功地使用了copy.copy和copy.deepcopy,但这是我第一次真正重载__copy__和__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给我正确的行为?