Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用值替换自身的对象_Python_Python 3.x - Fatal编程技术网

Python 用值替换自身的对象

Python 用值替换自身的对象,python,python-3.x,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 foo=BlackBox() bar1=foo.get(5) bar2=foo.get('bar')) 打印(bar1、bar2) >>

我想做以下几点:

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

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

foo.resolve()

print(bar1, bar2)
>>> 5 bar
foo=BlackBox()
bar1=foo.get(5)
bar2=foo.get('bar'))
打印(bar1、bar2)
>>>  
foo.resolve()
打印(bar1、bar2)
>>>5巴

有什么方法可以做到这一点或类似的事情吗?

虽然您不能替换实际引用,但您可以简单地使用一种方法来获得所需的结果,如果已经获得了,则将其缓存

您可以使用队列保留要发送到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)

>>
放错地方了我想我不相信有。。。但是如果你解释一下上下文,也许有一个有用的模式可以解决你的问题。(这个有点危险)。我可能完全错了,但这不是类中的
\uuu repr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
(或
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。当我使用
baz=[foo.get(5),foo.get('bar')]
时会发生什么?然后添加
spam=baz[0]
eggs=baz[1]
。你可以(用一些疯狂的东西),但你为什么要这么做?也许告诉我们你想要完成什么,我们就可以指出“正确”的方法。