如何从类中的异步函数访问实例变量 (Python)

问题描述

在完成我的脚本时,我很难完成获取计算变量以进行分析的脚本;我在下面做了一个简单的实现,它在高层次上代表了我的真实脚本,并且在脚本完成后没有获得计算变量的相同问题。谁能帮忙看看我在这个设置上可能做错了什么?

import asyncio

class example:
        def __init__(self,A,B,C):
            self.A = A
            self.B = B
            self.C = C
            
        
        def initialization(self):
            print("Init") 
            
        async def stream(self):
            print("stream 1")
            self.A = "A"
            return self.A
        
        async def stream2(self):
            print("stream 2")
            self.B = "B"
            return self.B

async def main():
    obj = example(A=None,B=None,C=None)
    obj.initialization()
    await obj.stream()
    return obj

asyncio.run(main())
>>>obj.A

终端返回以下似乎正确的内容

Init
stream 1

我在尝试访问计算变量时收到的错误如下:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-52-6df9ad5a9be5> in <module>
----> 1 obj.A

NameError: name 'obj' is not defined

我是 python 类的新手,当我不在类中使用 Asyncio 时,我可以获得实例变量,但对于我的实际项目,我需要使用 Asycnio 来流式传输 websocket;异步是这里的问题吗?我可以让事件循环在我的脚本中关闭并完成,但我无法从每个方法获取计算出的变量。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)