Обтекание объектов Python int / float - PullRequest
3 голосов
/ 10 марта 2011

Я работаю над платформой параллелизма Python (я знаю, YACF) и хотел бы иметь возможность возвращать переменные как Futures, но без уведомления пользователя.

Прямо сейчас я делаю:

x = someAsyncMethod(args)
print "Return value is %d" % x.get_value( )

Поскольку метод возвращает объект Future, но мне бы хотелось, чтобы он был:

x = someAsyncMethod(args)
print "Return value is %d" % x

Но по-прежнему вызывается .get_value () из x. Поэтому я бы хотел обернуть прокси объектами Python, включая int. Что-то вроде __get__, но если ProxyInt был прокси для int, а я сделал:

x = ProxyInt(10)
print x

или

n = x

Мой метод "__get__" будет вызван и совершит магию перед выполнением "возврата 10"

Ответы [ 2 ]

1 голос
/ 10 марта 2011
>>> 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
0 голосов
/ 10 марта 2011

Вы можете переопределить __getattr__ или __getattribute__ (в зависимости от того, что вам больше подходит), чтобы выполнить «магию», например, для первого атрибута доступа прокси.

...