2010-07-06 3 views
0

Forms есть Fields. Fields есть Widget. Если имя Field опущено, оно принимает имя переменной, указанное в форме. Например,Любые причины не изменять переменные другого класса?

MyForm(Form): 
    username = Field(name=None, widget=MyWidget(args)) 

Имя поля станет «именем пользователя». Однако это не может быть установлено до тех пор, пока форма не будет построена. Было бы ужасно установить атрибут field.name внутри инициализатора формы, но после того, как поле уже было построено?

Точно так же было бы ужасно установить некоторые атрибуты field.widget.xxx внутри инициализатора формы, чтобы «передать» некоторые переменные, которые используются в различных функциях внутри класса виджета? Или я должен явно передать их каждому вызову функции? Зачем?

ответ

3

Некоторые пуристы OO могут, возможно, возражать, но IMHO действительно не проблема в настройке публичных атрибутов в экземплярах других классов - в худшем случае, если позже вы обнаружите, что экземпляр должен предпринять некоторые действия, когда установлены определенные атрибуты, вы просто превратите атрибут в свойство, так что при назначении атрибута автоматически вызывается «метод setter» (просто убедитесь, что всегда используете классы нового стиля - например, наследуя от object, когда класс будет в противном случае нет оснований - так, чтобы property работал правильно, когда вам это нужно! -).

Смежные вопросы