小编Plu*_*rth的帖子

Python - 重载异步方法

我正在为 API 构建一个包装器。目前,它有效。但是,它是同步的,使用 HTTP 调用的请求模块。

我想实现一种异步调用这些方法的方法,而不必使用不同的名称或 lib 版本。我立即想到了重载,但看到 python 中的重载与其他语言有点不同,它看起来不太可能。

本质上,我想构建一个看起来像这样的类(从想法上来说,我知道它在 Python 中不起作用):

class Foo:
    def foo(self):
        # Requests code...
        print("foo sync")

    async def foo(self):
        # aiohttp code...
        print("foo async")
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用它:

f = Foo()
f.foo()
await f.foo()
Run Code Online (Sandbox Code Playgroud)

输出:

>> "foo sync"
>> "foo async"
Run Code Online (Sandbox Code Playgroud)

本质上,在这段代码中,异步函数将完全覆盖前一个函数,这并不是很有帮助。

从一些谷歌搜索来看,这看起来不太可能,但是,Python 总是设法让我感到惊讶。

提前致谢

python oop python-3.x async-await python-requests

9
推荐指数
1
解决办法
2439
查看次数

标签 统计

async-await ×1

oop ×1

python ×1

python-3.x ×1

python-requests ×1