创建从collections.OrderedDict继承的类的实例的浅表副本

时间:2016-08-30 06:02:21

标签: python

我有一个继承自collections.OrderedDict的类,其初始化程序采用位置参数而没有默认。我的目标是创建实例的副本。但是,我在下面的初始天真方法不起作用并引发类型错误,因为在构建新实例时必须提供位置参数。

class B(collections.OrderedDict):

def __init__(self, whatever):
    super().__init__()
    self.whatever = whatever

b = B(3)
b.update({'a':1})
print(b.copy())

解决方案可能是添加:

def copy(self):
    new = collections.OrderedDict(self)
    new.whatever = self.whatever
    return new

但是当属性数量增加时,这变得难以处理。对这个问题有更好,更直接的解决方案吗?

修改: 我使用的是Python 3.5

1 个答案:

答案 0 :(得分:0)

你可以使用python copy库:

copied_object = copy.copy(b)