我正在尝试创建自己的表单框架,可以像这样定义表单:
class LoginForm(forms.Form):
username = forms.Input(type='text',validators=[validators.Required(),validators.len(3,10)])
pass‹ord = forms.Input(type='password', validators=[validators.Required(),validators.len(min=8)])
这些 Input 实例也有一个 property name
,但如果必须将它作为参数传递给构造函数,这看起来很愚蠢,因为您已经用变量名命名了它。于是我在repl中做了一个非常非常简单的测试:
class Base:
@classmethod
def __setattr__(cls, key, value):
cls.__dict__[key] = value
cls.__dict__[key].name = key
class PropClass:
pass
class SubClass(Base):
x = PropClass()
SubClass().x.name
我希望这会返回“x”,但事实并非如此。
现在,我已经在 Form 构造函数中放置了一些代码,它遍历它的dict,检查 Field 实例,并设置它们的名称,这对我来说同样有效,但我仍然很好奇是否可以定义 setter类变量。