擅长:python、mysql、java
<p><code>class</code>语句是一个可执行语句,它:</p>
<ol>
<li>创建命名空间</li>
<li>在类语句块的顶层按顺序执行所有代码</li>
<li>使用类名、命名空间和父类列表调用适当的元类(默认为<code>type</code>)</li>
<li>将新创建的<code>class</code>对象绑定到封闭(通常是模块)命名空间中的类名</li>
</ol>
<p>长话短说,您不能从<code>class</code>语句体中访问实例属性,因为实例甚至类本身都不存在。在</p>
<p>如果您希望根据传递给表单初始值设定项的参数,在每个实例的基础上更新/添加/删除字段,正确的解决方案是首先调用父级的初始值设定项(以确保表单的实例字段正确初始化),然后执行所需的任何操作,例如:</p>
<pre><code>class MyInfoForm(forms.Form):
firstname = forms.CharField(label=u' First name :', max_length=30)
def __init__(self, *args,**kwargs):
self.flag= kwargs.pop('flag', None)
super(MyInfoForm, self).__init__(*args, **kwargs)
if self.flag:
# XXX IMPORTANT :
# you want to access self.fields['fieldname']
# NOT self.fieldname
self.fields["firstname"].label = "Yadda"
</code></pre>