在Python中覆盖嵌套类成员的更好方法是什么?

时间:2011-10-10 18:35:36

标签: python class inheritance syntax nested-class

我需要“覆盖”一些基类的嵌套类成员,同时保持其余的完整 这就是我的工作:

class InternGenericForm(ModelForm):                
    class Meta:
        model = Intern
        exclude = ('last_achievement', 'program',)
        widgets = {
            'name': TextInput(attrs={'placeholder': 'Имя и фамилия' }),
        }

class InternApplicationForm(InternGenericForm):
    class Meta:
        # Boilerplate code that violates DRY
        model = InternGenericForm.Meta.model
        exclude = ('is_active',) + InternGenericForm.Meta.exclude
        widgets = InternGenericForm.Meta.widgets

事实上,我希望InternApplicationForm.Meta 完全InternGenericForm.Meta完全相同,只是其exclude元组应该包含一个项目。

在Python中执行此操作的更美妙方法是什么? 我希望我不必编写像model = InternGenericForm.Meta.model那样容易出错的样板代码。

1 个答案:

答案 0 :(得分:15)

class InternGenericForm(ModelForm):                
    class Meta:
        model = Intern
        exclude = ('last_achievement', 'program',)
        widgets = {
            'name': TextInput(attrs={'placeholder': 'Имя и фамилия' }),
        }

class InternApplicationForm(InternGenericForm):
    class Meta(InternGenericForm.Meta):
        exclude = ('is_active',) + InternGenericForm.Meta.exclude