理解Python的静态方法和类方法
2014-08-10
Python  / 已有2922人围观

通过下面一个示例,彻底理解Python类方法,静态方法和实例方法的区别。代码如下:

class Test(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

t = Test()

t.foo(1)
# executing foo(<__main__.Test object at 0xb723efcc>, 1)

t.class_foo(1)
# executing class_foo(<class '__main__.Test'>, 1)
Test.class_foo(1)
# executing class_foo(<class '__main__.Test'>, 1)

t.static_foo(1)
# executing static_foo(1)
Test.static_foo(1)
# executing static_foo(1)

print(t.foo)
# <bound method Test.foo of <__main__.Test object at 0xb723efcc>>

print(t.class_foo)
# <bound method type.class_foo of <class '__main__.Test'>>

print(t.static_foo)
# <function static_foo at 0xb7226fb4>


参考文章

What is the difference between @staticmethod and @classmethod in Python


Over!

本文地址:http://xianglong.me/article/learn-python-9-static-method-class-method/

特别声明:本站文章,如非注明,皆为降龙原创。转载需注明本文链接并保证链接可用。