copy
我了解与deepcopy
复制模块中的区别。我之前成功地使用过copy.copy
and copy.deepcopy
,但这是我第一次真正开始重载__copy__
and__deepcopy__
方法。我已经在 Google 上搜索并查看了内置的 Python 模块以查找__copy__
and__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
给我正确的行为的正确方法是什么?