rank vote url
31 549 117 733 url

静态方法

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

  1. ClassName.StaticMethod ( )

是的,用静态方法装饰器

  1. class MyClass(object):
  2. @staticmethod
  3. def the_static_method(x):
  4. print x
  5. MyClass.the_static_method(2) # outputs 2

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

  1. class MyClass(object):
  2. def the_static_method(x):
  3. print x
  4. the_static_method = staticmethod(the_static_method)
  5. MyClass.the_static_method(2) # outputs 2

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

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

文档