python的成员方法,类方法和静态方法
转自:http://www.zeuux.com/blog/content/3030/
示例代码:
>>> 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 ) ... ... @staticmethod ... def static_foo ( x ): ... print "executing static_foo(%s)" % x ... >>> a=A() >>> >>> a.foo(1) executing foo(<__main__.A object at 0x1eb2e50>,1) >>> a.class_foo(1) executing class_foo(<class '__main__.A'>,1) >>> A.class_foo(1) executing class_foo(<class '__main__.A'>,1) >>> a.static_foo(1) executing static_foo(1)
>>> A.static_foo(1)
executing static_foo(1)
成员方法:需要用实例调用a.foo(),隐式传递的第一个参数为实例(a传递给self参数)。
类方法:可以用实例调用a.class_foo(),也可以用类调用A.class_foo().隐士传递的第一个参数为类(A传递给参数cls)。
静态方法:可以用实例调用a.static_foo(),也可以用类调用A.static_foo().既不需要self(实例),也不需要cls(类)作为隐式传递的参数。静态方法跟普通的非类方法差不多,可以理解为以类的形式封装了一些公共函数。