staticmethod对象显然具有
__func__存储原始原始函数的属性(它们必须这样做)。所以这将工作:
class Klass(object): @staticmethod # use as decorator def stat_func(): return 42 _ANS = stat_func.__func__() # call the staticmethod def method(self): ret = Klass.stat_func() return ret
顺便说一句,尽管我怀疑静态方法对象具有某种存储原始功能的属性,但我对具体细节一无所知。本着教别人钓鱼而不是给他们钓鱼的精神,这就是我所做的调查,并发现了这一点(Python会话中的C&P):
>>> class Foo(object):... @staticmethod... def foo():... return 3... global z... z = foo>>> z<staticmethod object at 0x0000000002E40558>>>> Foo.foo<function foo at 0x0000000002E3CBA8>>>> dir(z)['__class__', '__delattr__', '__doc__', '__format__', '__func__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']>>> z.__func__<function foo at 0x0000000002E3CBA8>
在交互式会话中进行类似的挖掘(
dir非常有帮助)通常可以非常快速地解决这些问题。



