我有一个继承自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