我正在研究一個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的代碼:)你看任何問題)
問題應該可能要求解決問題的方法,因此它不涉及在表單中嵌入大量隱藏字段? – 2011-05-19 01:55:18
謝謝你的建議,約翰。發佈了一個單獨的問題,描述了我正在使用的場景。 http://stackoverflow.com/questions/6054124。如果您有一些想法,請隨時發佈答案。我很想弄清楚如何以更清潔的方式實現這一點。 – 2011-05-19 05:23:09
+1用於查找我答案中的錯誤;現在我更瞭解python了! – SingleNegationElimination 2011-05-20 00:59:49