我刚开始学习python,最近在学习 类。 请看一下密码。在
class Critter(object):
"""your very own bug generator"""
total=0
def status(x):
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
运行代码时,我得到以下错误:
^{pr2}$我还不清楚绑定/未绑定是如何工作的。对于初学者的问题很抱歉,任何帮助都将不胜感激。在
您的代码存在以下问题:
status=staticmethod(status)
需要直接在类下定义,而不是在{status
是指Critter.status()
status()
方法不应采用任何参数x
,至少基于您显示的Critter.status()
调用。在您看到的上述错误表明python无法识别类定义中的
staticmethod
调用,因为它的缩进不正确。因此python只是将status()
方法定义为一个简单的实例方法(这是默认的)。对于实例方法,python希望第一个参数是实例句柄。在这应该是有效的:
输出:
^{pr2}$如果您使用的是python>;2.4(很可能是这样),那么可以使用
@staticmethod
修饰符来定义静态方法,如下所示:更改代码至:
若要查找有关绑定和未绑定方法的详细信息,请阅读以下内容Class method differences in Python: bound, unbound and static
相关问题 更多 >
编程相关推荐