私はcollections.OrderedDict
から継承し、初期化子はデフォルトなしなしのイニシャライザを継承しています。私の目標は、浅いインスタンスのコピーを作成することです。しかし、私の初期の単純なアプローチは動作しませんし、新しいインスタンスを構築するときに位置引数を指定する必要があるため、型エラーが発生します。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
しかし、属性の数が大きくなると、これは手に負えなくなりました。この問題に対して、より良い、より直接的な解決策がありますか?
EDIT: 私はあなたのpython copyライブラリを使用することができますPythonの3.5に
は、あなたが行うことができます属性: '新しい.__ dictの__アップデート。 (self .__ dict __) 'を' copy() 'に追加します。 –
@AshwiniChaudhary問題は、私がそれを好きにしても、クラスBのオブジェクトを戻さないということです。 – NoBackingDown