gpt4 book ai didi

python - 如何使 Python Decorator 在导入时不运行

转载 作者:太空狗 更新时间:2023-10-30 02:20:55 25 4
gpt4 key购买 nike

我在 Python 中装饰了一个方法。当我导入包含该方法的模块时,装饰器会自动运行。

我知道这就是装饰器的制作方式,但是有没有办法让装饰器不这样做?

最佳答案

听起来您想要做的是选择在运行时应用的装饰器。这样的事情可能会起作用:

to_decorate = []

def decorate_later(func):
to_decorate.append(func)
return func

@decorate_later
def do_stuff(*args, **kw):
print('I am doing stuff')
@decorate_later
def do_more_stuff(*args, **kw):
print('Even more stuff')

def apply_decorator(decorator):
for func in to_decorate:
globals()[func.func_name] = decorator(func)

然后你就可以导入模块了,所有的函数都会正常定义。 decorate_later 返回未修改的原始函数。您可以调用 apply_decorator() 将指定的装饰器应用于由 @decorate_later

注册的模块中的所有函数

关于python - 如何使 Python Decorator 在导入时不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601468/

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