Python复制:复制第一个项目,然后附加其他项目

时间:2014-09-16 13:52:38

标签: python deep-copy

我有两个脚本,一个是创建类的,另一个是加载/绘图脚本。我有三个同一个类的实例(T1T2T3),但希望将它们合并为一个T。当我只需T=T1时,T+T2T+T3T1T2会继续T3T个实例。拥有所有实例。

我尝试在我的类脚本中修改我的__add__魔术方法,如下所示,但deepcopy不起作用。 T仍然是空的。但是,当我在命令窗口中执行T = deepcopy(T1)时,它可以正常工作。我更喜欢__add__方法来包含此功能。

从课程脚本:

def __add__(self, other):
    """ A "magic" method to overload the '+' operator by
    appending trajectories.
    """
    if len(self.contents) == 0:
        self = deepcopy(other)
    else:
        self.contents.append(other)

我也尝试过创建一个直接执行deepcopy的新方法,但它也不会按预期复制。

def copy(self,other):
    self = deepcopy(other)

我从T空开始:

In [80]: T.contents
Out[80]: []

但我希望T包括T1T3T1T完全相同。

In [74]: T.contents
Out[74]: 
[Trajectory Object: MONTE_RUN_mmv13_2D2M_RODupdate
        contains data from FAST,
 Trajectory Object: MONTE_RUN_mmv13_1D2M_RODupdate
        contains data from FAST,
 Trajectory Object: MONTE_RUN_mmv13_2D3M
        contains data from FAST]

In [74]: T1.contents
Out[74]: 
[Trajectory Object: MONTE_RUN_mmv13_2D2M_RODupdate
        contains data from FAST,
 Trajectory Object: MONTE_RUN_mmv13_1D2M_RODupdate
        contains data from FAST,
 Trajectory Object: MONTE_RUN_mmv13_2D3M
        contains data from FAST]

0 个答案:

没有答案