用值替换自身的对象

时间:2014-02-27 17:06:11

标签: python python-3.x

我想做一些事情:

foo = BlackBox()
bar1 = foo.get(5)
bar2 = foo.get('bar')

print(bar1, bar2)
>>> <object> <object>

foo.resolve()

print(bar1, bar2)
>>> 5 bar

有没有办法做到这一点或类似的东西?

1 个答案:

答案 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)