如何从我的库中调用标有装饰器的函数?

问题描述 投票:0回答:1

库如何调用带有装饰器标记的函数? 示例:

@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!")

怎样才能更轻松?

python python-3.x events decorator python-decorators
1个回答
0
投票

这可能有助于解释装饰器如何比我在这里更好地工作: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)()

不太确定如何使您的特定示例“更简单”,但希望这能回答装饰器如何工作的问题?

© www.soinside.com 2019 - 2024. All rights reserved.