可能重复:
Does python has methods similar to __setattr__ but for python class?
我正在尝试创建自己的表单框架,其中表单可以像这样定义:
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实例也有一个属性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。