【发布时间】:2022-11-25 11:42:24
【问题描述】:
这是我的问题和代码: 我尝试使用装饰器来记录时间成本;但我无法获得班级名称。
import functools
import time
def log_time(func):
@functools.wraps(func)
def record(*args, **kwargs):
# print(func)
# print(func.__name__)
# print(func.__class__)
# print(func.__class__.__name__)
func_name = func.__name__
start_time = time.time()
result = func(*args, **kwargs)
print(f"{func_name} costs time: {time.time() - start_time:.2f}s")
return result
return record
class FakeProject:
@log_time
def __init__(self, value):
self.load_data = [i for i in range(value)]
fake_project = FakeProject(100000000)
以上代码的日志消息为__init__ cost time: 3.65s;
但我想要 FakeProject.__init__ cost time: 3.65s 代替。
我怎样才能得到类名并打印出来?任何人都可以帮忙吗?不管怎么说,还是要谢谢你
我尝试打印
print(func)
print(func.__name__)
print(func.__class__)
print(func.__class__.__name__)
我得到
<function FakeProject.__init__ at 0x0000022F3F365318>
__init__
<class 'function'>
function
【问题讨论】:
标签: python class printing decorator