Perhaps if you show us what you actually do, and what happens, we might
be able to tell you what is happening. Please COPY AND PASTE the full
traceback.
Here is my code:
# Trying to make callable staticmethod
class sm(staticmethod):
def __call__(self, *args, **kwargs):
""" I know here is one more potential problem, because object
passed instead of real class """
return self.__get__(None, object)(*args, **kwargs)
issubclass(sm, Callable)
class Foo(object):
@sm
def bar():
print("ololo")
print("inside", bar, callable(bar), bar())
if __name__=="__main__":
print("class outise", Foo.bar, callable(Foo.bar), Foo.bar())
f = Foo()
print("instance outside", f.bar, callable(f.bar), f.bar())
cpython output:
ololo
('inside', <__main__.sm object at 0xb72b404c>, True, None)
ololo
('class outise', <function bar at 0xb72a680c>, True, None)
ololo
('instance outside', <function bar at 0xb72a680c>, True, None)
jython output:
Traceback (most recent call last):
File "sm.py", line 17, in <module>
class Foo(object):
File "sm.py", line 23, in Foo
print("inside", bar, callable(bar), bar())
TypeError: 'staticmethod' object is not callable