Я работаю над приложением Django, но похоже, что это просто вопрос о Python, не имеющий ничего специфического для Django. Я новичок в python, и мне сложно описать то, что я пытаюсь сделать, но проще показать, так что вот:
У меня есть один класс:
class SlideForm(ModelForm):
class Meta:
model = Slide
, который я подклассифицирую:
class HiddenSlideForm(SlideForm):
def __init__(self, *args, **kwargs):
super(HiddenSlideForm, self).__init__(*args, **kwargs)
for name, field in self.fields.iteritems():
field.widget = field.hidden_widget()
field.required = False
, а затем у меня есть другой класс:
class DeckForm(ModelForm):
def __init__(self, *args, **kwargs):
# do some stuff here
return super(DeckForm, self).__init__(*args, **kwargs)
class Meta:
model = Deck
# other stuff here
, который я также подклассом:
class HiddenDeckForm(DeckForm):
def __init__(self, *args, **kwargs):
super(HiddenDeckForm, self).__init__(*args, **kwargs)
for name, field in self.fields.iteritems():
field.widget = field.hidden_widget()
field.required = False
Обратите внимание, что подклассы имеют точно такой же код, кроме имен классов, и делают то же самое. Я пытался понять, какой лучший способ обобщить это, чтобы я мог сохранить его СУХИМ и легко использовать для других классов, и рассмотрел декораторы и / или множественное наследование - оба эти понятия для меня новые, но я продолжают путаться.
Помощь приветствуется!
(В качестве примечания, не стесняйтесь указывать на любые проблемы, которые вы видите в моем коде django :))