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 方法才能使用它,我正在这样做:

from copy import deepcopy

这里我的理解有一些错误,提前感谢解释。

4

1 回答 1

1

不确定您究竟想对字段和值参数做什么,但您不能以您尝试的方式进行操作。由于您没有对 deepcopy 函数本身做任何事情,因此它对您在模型deepcopy方法中所做的更改一无所知。

如果您查看有关复制的文档,它将解释如何覆盖复制和深度复制http://docs.python.org/library/copy.html

如果您确实需要在复制时传递选项,您可能会考虑制作自己的方法,而不是尝试覆盖内置行为。

希望这可以帮助!请随时回复有关您尝试使用其他参数做什么的更多详细信息。

于 2011-03-22T15:07:44.690 回答