假设我有这个
class Test():
def __init__(self, number):
self.number = number
await self.TestPrint()
async def TestPrint(self):
print(self.number)如您所见,这是行不通的,因为__init__不是异步的,我不能调用等待函数
如果我想维护这个函数异步TestPrint,我希望能够在__init__ 中运行。
我还希望这与类(其他函数、其他类、main等)无关。
谢谢您抽时间见我。
发布于 2022-01-28 22:23:07
就像chepner在评论中提到的:
是一个异步类方法,它创建对象,然后在返回之前调用
TestPrint方法,这听起来更合适。
这是首选的方法,也是为什么很多函数初始化内部异步类而不是直接实例化它们的原因。
也就是说,如果您想让这个类接近这个类,您可以使用一个可以是异步的@classmethod。您的代码将如下所示:
class Test():
def __init__(self, number):
self.number = number
async def TestPrint(self):
print(self.number)
@classmethod
async def with_print(cls, number):
self = cls(number)
await self.TestPrint()
return selfasync def main():
t = await Test.with_print(123)
# 't' is now your Test instance.
...https://stackoverflow.com/questions/70870688
复制相似问题