擅长:python、mysql、java
<p>类变量正在被覆盖。试试看</p>
<pre><code>@classmethod
def showDefaultValue(cls):
print "defl == %s" % (cls.default,)
</code></pre>
<p>这种方法不起作用的原因更多地与Python对待函数的默认参数的方式有关,而不是与类属性有关。当Python定义<code>showDefaultValue</code>的绑定时,会计算<code>defl</code>的默认值,并且只执行一次。调用方法时,使用的默认值是定义时计算的值。</p>
<p>在您的例子中,<code>defl</code>被绑定到<code>default</code>变量的值,就像在执行<code>Base</code>的类体形式时一样。无论以后如何调用<code>showDefaultValue</code>(即,是通过<code>Base</code>还是通过<code>Descend</code>),该值在<code>showDefaultValue</code>的所有后续调用中都保持固定。</p>