我想做一些事情:
foo = BlackBox()
bar1 = foo.get(5)
bar2 = foo.get('bar')
print(bar1, bar2)
>>> <object> <object>
foo.resolve()
print(bar1, bar2)
>>> 5 bar
有没有办法做到这一点或类似的东西?
答案 0 :(得分:0)
虽然您无法替换实际引用,但您只需使用方法即可获得所需结果,并在已获取结果时对其进行缓存。
您可以使用队列来保存要发送到Web服务的请求,并一次完成所有这些操作:
class WebServiceResponse(object):
def __init__(self, req_manager, expression):
self.req_manager= req_manager
self.expression= expression
self.evaluated= False
def get(self):
if not self.evaluated:
self.req_manager.process()
return self.value
class RequestManager(object):
def __init__(self):
self.queue=[]
def get_result( self, expression ):
wsr= WebServiceResponse( self, expression )
self.queue.append(wsr)
return wsr
def process( self ):
expressions= [e.expression for e in self.queue]
results= webservice.evaluate( expressions)
for e,r in zip(self.queue, results):
e.evaluated= True
e.value= r
self.queue=[]
rm= RequestManager()
my_results= map(rm.get_result, ["expr1", "expr2])
my_results= map( lambda x:x.get(), my_results)