我正在研究一个Python并发框架(我知道,YACF),并且希望能够将变量作为Futures返回,但没有用户注意到它。
现在我正在做:
x = someAsyncMethod(args)
print "Return value is %d" % x.get_value( )
因为该方法返回一个Future对象,但我希望它是:
x = someAsyncMethod(args)
print "Return value is %d" % x
但是仍然调用了x的.get_value()。因此我想代理包装包含int的Python对象。像__get__这样的东西,但是如果ProxyInt是int的代理,我做了:
x = ProxyInt(10)
print x
或
n = x
在执行“return 10”
之前,我的“__get__”方法会被调用并做一些魔术答案 0 :(得分:1)
>>> class I(object):
... def __int__(self):
... return 42
...
>>> i = I()
>>> print '%d' % i
42
>>> class F(object):
... def __float__(self):
... return 3.14
...
>>> f = F()
>>> print '%f' % f
3.140000
>>> class S(object):
... def __str__(self):
... return 'foo'
...
>>> s = S()
>>> print s
foo
答案 1 :(得分:0)
您可以覆盖__getattr__
或__getattribute__
(您最需要的套房)来执行“魔术”,例如代理的第一次属性访问。