假设我使用的是使用请求模块的第三方API。比如:
import requests
class ThirdPartyAPI(object):
'''
A pretend API
'''
def __init__(self):
self._session = requests.Session()
我希望所说的API在不编辑API源代码的情况下使用FuturesSession
形式的requets-futures模块
我必须像这样子类ThirdPartyAPI
吗
from requests_futures.sessions import FuturesSession
class SubAPI(ThirdPartyAPI):
'''
Dependency inject a FuturesRequets session
'''
def __init__(self):
super().__init__()
self._session = FuturesSession()
这似乎不是最好的办法。在上面的例子中,_session
被写入两次,即使我只想要第二次分配的对象
这通常是如何处理的?还是最好的方法
注:我知道这只是ice在第三方API中实现异步需求的冰山一角。因为所有的响应都将成为未来的对象((一步一个脚印)
从性能的角度来看,这不是最好的方法,因为您创建了一个不必要的对象。但考虑到不修改基础对象的限制,这是唯一可能的方法。如果不调用其构造函数,就不能使用“ThirdPartyAPI”
在大型OO库中,这样做并不少见:PyQt在许多情况下都是这样做的,在复杂类中用一个组件替换另一个组件以获得一些定制行为
相关问题 更多 >
编程相关推荐