gpt4 book ai didi

python - 将装饰器附加到类中的所有函数

转载 作者:IT老高 更新时间:2023-10-28 20:38:15 24 4
gpt4 key购买 nike

我真的不需要这样做,但只是想知道,有没有办法将装饰器一般地绑定(bind)到类中的所有函数,而不是为每个函数显式声明它。

我想它会变成一种方面,而不是装饰器,它确实感觉有点奇怪,但考虑到时间或身份验证之类的东西会很整洁。

最佳答案

执行此操作或对类定义进行其他修改的最简洁方法是定义元类。

或者,只需使用 inspect 在类定义的末尾应用您的装饰器:

import inspect

class Something:
def foo(self):
pass

for name, fn in inspect.getmembers(Something, inspect.isfunction):
setattr(Something, name, decorator(fn))

在实践中,您当然希望更有选择性地应用您的装饰器。当您想要装饰除一种方法之外的所有方法时,您会发现仅以传统方式使用装饰器语法更容易、更灵活。

关于python - 将装饰器附加到类中的所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467526/

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