我有以下代码:
import asyncio
class Test:
async def hello_world(self):
while True:
print("Hello World!")
await asyncio.sleep(1)
test = Test()
loop = asyncio.get_event_loop()
# Blocking call which returns when the hello_world() coroutine is done
loop.run_until_complete(test.hello_world())
loop.close()
有没有办法让hello_world函数从类中开始运行(当创建类的对象时)而不从外部执行它?
答案 0 :(得分:1)
异步构造函数是否需要你的技巧?为了能够实现这样的用法:
async def main():
test = await Test()
您只需要让异步构造函数返回self
并向您的类中添加__await__
方法:
class Test:
async def hello_world(self):
while True:
print("Hello World!")
await asyncio.sleep(1)
return self
def __await__(self):
return self.hello_world().__await__()