类变量被压缩

基于python导入的工作原理,我遇到了一个我不理解的奇怪问题(我相信)

我定义了一个类,还有一个装饰器,它用值填充类变量(字典)。装饰器在其他模块中应用于函数,因此它们已在类中注册。这工作正常(我可以中断并看到已填充类变量)。但是,当我运行使我查找这些函数(在class变量中)的代码时,class变量是一个空字典。

event_cog.py
class Events(commands.Cog):
       REactION_HANDLERS = dict()

def handle_reaction(reaction_emoji):
    """
    allows you to register a function as a specific reaction handler for the embed representing an event
    """

    def inner(func):
        Events.REactION_HANDLERS[reaction_emoji] = func
        return func

    return inner

import b.py
b.py
import event_cog
@event_cog.handle_reaction(emo(":white_check_mark:",use_aliases=True))
async def event_white_check_mark_handler(
    self,ctx,channel: TextChannel,member: discord.Member,message: Message
):

如果我在两次执行之后在装饰器中设置了一个断点

str(Events.REactION_HANDLERS)
'{\'✅\': <function event_white_check_mark_handler at 0x0584FBB8>,\'❌\': <function event_x_handler at 0x05835D68>}'

稍后任何时候我的代码仍想访问这些功能...

str(Events.REactION_HANDLERS)
'{}'
iCMS 回答:类变量被压缩

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1813766.html

大家都在问