提问人: 提问时间:8/18/2023 更新时间:8/18/2023 访问量:17
如何从库中调用标有装饰器的函数?
How do I call a function from my library that is marked with a decorator?
问:
库如何调用标有装饰器的函数? 例:
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
这是如何在库内实现的? 我试着做点什么,但我认为有一种更简单的方法。
def None_type():
pass
on_connect_var = None_type
def on_connect(func):
global on_connect_var
on_connect_var = func
...
on_connect_var()
...
@event_manager.on_connect
def on_connect():
print("Connected!")
如何让它更容易?
答:
0赞
C. McCracken
8/18/2023
#1
这可能有助于解释装饰器如何比我在这里做得更好:https://henryiii.github.io/level-up-your-python/notebooks/2.3%20Decorators.html
这个想法是装饰器使用函数组合,你有一个函数返回另一个函数(这里),你用它来装饰另一个函数(这里)。在您的示例中,client.event
on_ready
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
当你以后打电话时,你真的在打电话on_ready()
client.event(on_ready)()
不太确定如何使您的特定示例“更容易”,但希望这能回答装饰器如何工作的问题?
评论
0赞
8/18/2023
我知道装饰器是如何工作的,只是如何使用它们制作事件,就像在示例中一样,这就是我问的
评论
client