这两种方法使用上没有任何区别,都可以被类和类实例访问,唯一的区别是类方法里面有个cls,可以知道当前调用他的类是什么,下面一个别人举的不太恰当的例子以便理解
class Color(object):
_color = (0, 0, 0);
@classmethod
def value(cls):
if cls.__name__== 'Red':
cls._color = (255, 0, 0)
elif cls.__name__ == 'Green':
cls._color = (0, 255, 0)
return cls._color
class Red(Color):
pass
class Green(Color):
pass
class UnknownColor(Color):
pass
red = Red()
green = Green()
xcolor = UnknownColor()
print 'red = ', red.value()
print 'green = ', green.value()
print 'xcolor =', xcolor.value()