我正在为 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 总是设法让我感到惊讶。
提前致谢