![](/img/trans.png)
[英]How to write a python program that automatically starts when windows start?
[英]How to make decorators take effect when the program starts - Python
当装饰器应用于其他模块中的方法时,如果我想让这些装饰生效,我需要加载这些模块。
我可以让它们在程序启动时加载吗?
我尝试在main.py
中导入所有模块可以实现这个目标,有没有其他方法可以做到这一点?
有点不清楚你想要什么(一个最小的、可重现的例子会很有帮助),但我会试着解释一下装饰器是什么以及它们的代码何时运行。 我基本上将总结关于装饰器的优秀 Real Python 文章的部分内容,您绝对应该阅读这篇文章以获得完整的理解。
装饰器只是功能。 真正的 Python 给出了这个例子:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
def say_whee():
print("Whee!")
say_whee = my_decorator(say_whee)
如果运行它,它会生成以下 output:
>>> say_whee()
Something is happening before the function is called.
Whee!
Something is happening after the function is called.
现在你可能认为我没有给你展示一个装饰器,只是一个包装器 function。 你猜怎么着? 一样。 装饰器是我们上面所做的合成糖,事实上:我们可以像装饰器一样使用相同的 function:
@my_decorator
def say_whee():
print("Whee!")
至于何时运行装饰器,答案是“每当运行装饰的 function 时”。 没有比这更奇妙或更神秘的事情了。 如果你想让你的装饰器运行,你需要运行被装饰的函数。 如果装饰物是 class,则每次实例化 class 的实例时都会运行装饰器,猜猜看,这是通过运行装饰器包装的 function 来实现的。
希望这能把事情弄清楚一点。 同样,我强烈建议阅读链接的 Real Python 文章以获得更完整的理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.