【发布时间】:2012-06-09 04:00:53
【问题描述】:
基类看起来像这样(代码来自 Django,但问题不是 Django 特定的):
class BaseModelForm(BaseForm):
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
initial=None, error_class=ErrorList, label_suffix=':',
empty_permitted=False, instance=None):
class ModelForm(BaseModelForm):
__metaclass__ = ModelFormMetaclass
派生类如下所示:
class MyForm(forms.ModelForm):
def __init__(self, data=None, files=None, *args, **kwargs):
super(EdocForm, self).__init__(data, files, *args, **kwargs)
self.Meta.model.get_others(data, files, kwargs.get('instance', None))
如果编码人员将实例作为 kwargs 传递,这一切都很好,应该可以工作,但如果他们不这样做,而是将其传递给 args 怎么办?在处理 *args 和 **kwargs 时,提取 instance 的明智方法是什么?诚然,在这种情况下,实例在 args 中的机会很小,但如果它是第三个参数而不是第五个(不包括 self)。
【问题讨论】:
标签: python