库如何调用带有装饰器标记的函数? 示例:
@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!")
怎样才能更轻松?
这可能有助于解释装饰器如何比我在这里更好地工作: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)()
不太确定如何使您的特定示例“更简单”,但希望这能回答装饰器如何工作的问题?