Python的staticmethod和classmethod装饰器用法、区别
Python的staticmethod和classmethod装饰器会迷惑一些人,有的人总会纠结什么时候用怎么用。俺写了个简单的例子,很清楚就能看出来这几种方法的区别。什么时候用怎么用就不用再多说了吧。
# -*- coding:utf-8 -*- class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print "executing class_foo(%s,%s)"%(cls,x) cls().foo(x) @staticmethod def static_foo(x): print "executing static_foo(%s)"%x a=A() a.foo(1) print '1' a.class_foo(1) print '2' A.class_foo(1) print '3' a.static_foo(1) ''' executing foo(<__main__.A object at 0x01AA17F0>,1) 1 executing class_foo(<class '__main__.A'>,1) executing foo(<__main__.A object at 0x01AA1830>,1) 2 executing class_foo(<class '__main__.A'>,1) executing foo(<__main__.A object at 0x01AA1830>,1) 3 executing static_foo(1) '''

