This is not how staticmethod
is supposed to be used. staticmethod
objects are descriptors that return the wrapped object, so they only work when accessed as classname.staticmethodname
. Example
class A(object):
@staticmethod
def f():
pass
print A.f
print A.__dict__["f"]
prints
<function f at 0x8af45dc>
<staticmethod object at 0x8aa6a94>
Inside the scope of A
, you would always get the latter object, which is not callable.
I’d strongly recommend to move the decorator to the module scope — it does not seem to belong inside the class. If you want to keep it inside the class, don’t make it a staticmethod
, but rather simply del
it at the end of the class body — it’s not meant to be used from outside the class in this case.