3

この質問から、Django モデルで deepycopy をオーバーライドするというアイデアを得ました。その質問からコード スニペットを取得し、次の署名を使用してモデルに入れました。

def __deepcopy__(self, *args, **kwargs):

ただし、「フィールド」および「値」パラメーターも渡すことができるようにしたいのですが、これは機能しません。私が呼び出すとき:

deepcopy(s1, field='foo',value='bar')

kwargs['field'] と kwargs['value'] を使用してパラメーターをメソッド本体から取得しようとすると、次のエラーが発生します。

File "<stdin>", line 1, in <module>
TypeError: deepcopy() got an unexpected keyword argument 'field'

ちなみに、deepcopy メソッドを使用するには、deepcopy メソッドをインポートする必要があると想定しています。

from copy import deepcopy

ここでの私の理解にはいくつかの誤りがあります。説明していただきありがとうございます。

4

1 に答える 1

1

フィールドと値のパラメーターで何をしようとしているのか正確にはわかりませんが、意図したとおりに行うことはできません。deepcopy 関数自体には何もしていないため、モデルのdeepcopyメソッドで行った変更については何も知りません。

コピーに関するドキュメントをチェックアウトすると、コピーとディープコピーをオーバーライドする方法が説明されていますhttp://docs.python.org/library/copy.html

コピー時にオプションを渡す必要がある場合は、組み込みの動作をオーバーライドするのではなく、独自のメソッドを作成することを検討してください。

お役に立てれば!追加の引数で何をしようとしているのかについて、より詳細に返信してください。

于 2011-03-22T15:07:44.690 に答える