<p>您的代码存在以下问题:</p>
<ul>
<li>缩进问题。您定义的任何需要绑定到类(即属于该类)的变量或方法都需要在该类下缩进一个级别。在</li>
<li><code>status=staticmethod(status)</code>需要直接在类下定义,而不是在{<cd2>}方法定义的范围内。因为<code>status</code>是指<code>Critter.status()</code></li>
<li><code>status()</code>方法不应采用任何参数<code>x</code>,至少基于您显示的<code>Critter.status()</code>调用。在</li>
</ul>
<p>您看到的上述错误表明python无法识别类定义中的<code>staticmethod</code>调用,因为它的缩进不正确。因此python只是将<code>status()</code>方法定义为一个简单的实例方法(这是默认的)。对于实例方法,python希望第一个参数是实例句柄。在</p>
<p>这应该是有效的:</p>
<pre><code>class Critter(object):
"""your very own bug generator"""
total=0
def status():
print Critter.total
status=staticmethod(status)
def __init__(self,name):
print 'a critter has been created'
self.name=name
Critter.total+=1
crit1=Critter('pooch')
crit2=Critter('Duff')
crit3=Critter('pluto')
Critter.status()
print'\nAccessing the class attributes through an object:',crit1.total
</code></pre>
<p><strong>输出:</strong></p>
^{pr2}$
<p>如果您使用的是python>;2.4(很可能是这样),那么可以使用<code>@staticmethod</code>修饰符来定义静态方法,如下所示:</p>
<pre><code>class Critter(object):
"""your very own bug generator"""
total=0
@staticmethod
def status():
print Critter.total
def __init__(self,name):
print 'a critter has been created'
self.name=name
Critter.total+=1
</code></pre>