Python中的静态方法?
Python中是否可以有无需初始化类即可调用的静态方法,例如:
ClassName.static_method()
回答:
是的,使用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
),只是不使用漂亮的装饰器语法
最后,要staticmethod()
谨慎使用!在极少数情况下,Python中需要使用静态方法,而我已经看到它们使用过很多次,而使用单独的“顶层”函数会更加清楚。
以下是文档的逐字记录:
静态方法不会收到隐式的第一个参数。要声明静态方法,请使用以下惯用法:
class C: @staticmethod
def f(arg1, arg2, ...): ...
@staticmethod形式是一个函数装饰器 –有关详细信息,请参见函数定义中的函数定义说明。
可以在类(如C.f()
)或实例(如C().f()
)上调用它。该实例除其类外均被忽略。
Python中的静态方法类似于Java或C ++中的静态方法。有关更高级的概念,请参见classmethod()
。
有关静态方法的更多信息,请参阅标准类型层次结构中有关标准类型层次结构的文档。
2.2版中的新功能。
在版本2.4中更改:添加了函数装饰器语法。
以上是 Python中的静态方法? 的全部内容, 来源链接: utcz.com/qa/410047.html