在__init__代码的不同行中调用super()有什么区别?

时间:2016-01-21 09:33:59

标签: python django oop

我有一小段代码,让我们说:

class ChoiceForm(forms.Form):

    type = forms.ChoiceField(choices=[
        (CHOICE_YES, CHOICE_YES),
        (CHOICE_NO, CHOICE_NO),
    ])

    def __init__(self, user=None, *args, **kwargs):
        super(ChoiceForm, self).__init__(*args, **kwargs)
        self.user = user

    def clean(self):
        form_data = self.cleaned_data
        pass

在第一种情况下,不会调用重写方法clean

__init__方法之外的相同代码:

def __init__(self, user=None, *args, **kwargs):
    self.user = user
    super(ChoiceForm, self).__init__(*args, **kwargs)

在这种情况下,调用覆盖的清理。有什么区别?

注意:在视图中调用is_valid方法。

视图的一部分,其中使用了表单:

def get(self, request, *args, **kwargs):
    form = ChoiceForm(self.user, self.kwargs)
    if not form.is_valid():
        return HttpResponse(status=400)
    try:

0 个答案:

没有答案