有什么理由不修改另一个类的变量?

时间:2010-07-06 02:28:04

标签: python design-patterns

FormsFieldsFields有一个Widget。如果省略Field名称,则采用表单中指定的变量名称。例如,

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

字段名称将变为“用户名”。但是,在构建表单之前无法确定。在表单初始值设定项中设置field.name属性,但是在已经构造了字段之后,它是否太可怕了?

同样,在表单初始化程序中设置一些field.widget.xxx属性以“传递”在窗口小部件类中的各种函数中使用的一些变量是否太可怕了?或者我应该明确地将它们传递给每个函数调用?为什么呢?

1 个答案:

答案 0 :(得分:3)

一些OO纯粹主义者可能会反对,但恕我直言,在其他类的实例中设置公共属性确实没有问题 - 最坏的情况是,如果稍后您发现实例需要在设置某些属性时采取某些操作,只需将属性转换为属性,以便在分配属性时自动调用“setter方法”(只需确保始终使用新样式类 - 例如通过继承自{ {1}}当一个类没有基础时 - 以便object在你需要时正常工作! - 。)。