这不是staticmethod
应该使用的方式。staticmethod
对象是返回包装对象的描述符,因此它们仅在以身份访问时才起作用classname.staticmethodname
。例
class A(object):
@staticmethod
def f():
pass
print A.f
print A.__dict__["f"]
版画
<function f at 0x8af45dc>
<staticmethod object at 0x8aa6a94>
我强烈建议将装饰器移至模块作用域- 它似乎不属于类内部。如果您想将其保留在类中,请不要将其设置为staticmethod
,而应将其简单地del
放在类主体的末尾-在这种情况下,不应在类外部使用它。