以下有用的装饰器测量函数的执行时间。它还会打印函数的名称。但是,如果函数是一个方法,它也可以打印类名。获得完整方法名称la Class.method
的简洁方法是什么?
import time
def timeit(f):
def timed(*args, **kw):
ts = time.time()
result = f(*args, **kw)
te = time.time()
print('func:%r args:[%r, %r] took: %2.4f sec' % (f.__name__, args, kw, te-ts))
return result
return timed
答案 0 :(得分:4)
.__qualname__
怎么样?
In [1]: class MyClass(object):
...: def my_method(self):
...: pass
...:
In [2]: MyClass.my_method.__qualname__
Out[2]: 'MyClass.my_method'
答案 1 :(得分:1)
可能有更好的方法,但在Python 2中(没有__qualname__
)你可以使用
m.im_class.__name__
,如
>>> class MyClass(object):
... def foo(self):
... pass
...
>>> m = MyClass.foo
>>> print m.im_class.__name__ + '.' + m.__name__
MyClass.foo