gpt4 book ai didi

python - 装饰器和 error function() 参数 1 必须是 code,而不是 str

转载 作者:行者123 更新时间:2023-11-30 23:37:49 25 4
gpt4 key购买 nike

我有下一个代码

def timer_dec(f):
def wrapper(*args, **kwargs):
t = time.time()
args[0].debug('<{}> start'.format(f.__name__))
res = f(*args, **kwargs)
args[0].debug('<{}> finish'.format(f.__name__))
args[0].debug("Working time for function <%s>: %f" % (f.__name__, time.time() - t))
return res

return wrapper

这工作正常:

@timer_dec
class A(object):
pass

但这不起作用:

@timer_dec
class A(object):
pass

class B(A):
pass

TypeError: Error when calling the metaclass bases function() argument 1 must be code, not str

Python version is 2.7

最佳答案

您似乎正在使用函数装饰器作为类装饰器。

@timer_dec
class A(object):
pass

相当于

class A(object):
pass
A = timer_dec(A)

因为 timer_dec 返回一个函数,所以 A 现在是一个函数。

<小时/>

您可以创建一个类装饰器,将函数装饰器应用于该类的所有方法。请参阅此处的示例:Alex Martelli's answer to Applying python decorators to methods in a class

关于python - 装饰器和 error function() 参数 1 必须是 code,而不是 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com