Есть ли причина не изменять переменные другого класса? - PullRequest
0 голосов
/ 06 июля 2010

Forms есть Fields. Fields есть Widget. Если имя Field опущено, оно принимает имя переменной, указанное в форме. Например,

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

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

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

1 Ответ

3 голосов
/ 06 июля 2010

Некоторые пуристы ОО могут, возможно, возразить, но ИМХО действительно нет проблем с установкой общедоступных атрибутов в экземплярах других классов - наихудший случай, если позже вы обнаружите, что экземпляру необходимо предпринять какое-то действие при установке определенных атрибутов, вы Вы просто превратите атрибут в свойство, чтобы при назначении атрибута автоматически вызывался «метод установки» (просто всегда используйте классы new style - например, наследуя от object когда у класса не было бы оснований - property работает правильно, когда вам это нужно! -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...