Python多个类层次结构__init__未被执行

时间:2014-02-19 23:59:14

标签: python django

我正在使用django,但这是一个普通的python问题。

我已经定义了一个我打算用来扩展ModelForm和Form类的类,来自django.forms。

代码如下所示:

class FormMixin(object):

    def __init__(self, *args, **kwargs):
        """ every method ocurrence must call super """
        super(FormMixin, self).__init__(*args, **kwargs) 
        self.new_attr = 'This is an attribute'



class ModelFormAdapter(forms.ModelForm):
""" I use this class so __init__ signatures match """
    def __init__(self, *args, **kwargs):
        """ every method ocurrence must call super """
        super(ModelFormAdapter, self).__init__(*args, **kwargs)         


class BaseModelForm(ModelFormAdapter, FormMixin):

    def __init__(self, *args, **kwargs):
        """ BaseModelForm never gets the attribute new_attr """
        super(BaseModelForm, self).__init__(*args, **kwargs) 

我甚至调试了这个,并且从不调用FormMixin init 方法。我究竟做错了什么?我想要实现的是向表单添加一些属性并预处理字段标签和css类

1 个答案:

答案 0 :(得分:2)

那是因为ModelFormAdapter的一个祖先(BaseForm),没有调用super,而且链断裂了。将FormMixin放在父列表中。