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里只有很少的场合适用静态方法,其实许多顶层函数会比静态方法更清晰明了.