首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步Python -如何使类__init__在类__init__中运行异步函数

异步Python -如何使类__init__在类__init__中运行异步函数
EN

Stack Overflow用户
提问于 2022-01-26 21:48:00
回答 1查看 1.2K关注 0票数 2

假设我有这个

代码语言:javascript
复制
class Test():
    def __init__(self, number):
        self.number = number
        await self.TestPrint()

    async def TestPrint(self):
            print(self.number)

如您所见,这是行不通的,因为__init__不是异步的,我不能调用等待函数

如果我想维护这个函数异步TestPrint,我希望能够在__init__ 中运行

我还希望这与类(其他函数、其他类、main等)无关。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

发布于 2022-01-28 22:23:07

就像chepner在评论中提到的:

是一个异步类方法,它创建对象,然后在返回之前调用TestPrint方法,这听起来更合适。

这是首选的方法,也是为什么很多函数初始化内部异步类而不是直接实例化它们的原因。

也就是说,如果您想让这个类接近这个类,您可以使用一个可以是异步的@classmethod。您的代码将如下所示:

代码语言:javascript
复制
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 self
代码语言:javascript
复制
async def main():
    t = await Test.with_print(123)
    # 't' is now your Test instance.
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70870688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档