rank vote view answer url
59 1424 790037 9 url

静态方法

Python有没有静态方法使我可以不用实例化一个类就可以调用,像这样:

ClassName.StaticMethod ( )

是的,用静态方法装饰器

class MyClass(object):
    @staticmethod
    def the_static_method(x):
        print x

MyClass.the_static_method(2) # outputs 2

注意有些代码用一个函数而不是staticmethod装饰器去定义一个静态方法.如果你想支持Python的老版本(2.2和2.3)可以用下面的方法:

class MyClass(object):
    def the_static_method(x):
        print x
    the_static_method = staticmethod(the_static_method)

MyClass.the_static_method(2) # outputs 2

这个方法和第一个一样,只是没有第一个用装饰器的优雅.

最后,请少用staticmethod方法!在Python里只有很少的场合适用静态方法,其实许多顶层函数会比静态方法更清晰明了.

文档