Если вам нужны результаты функции foo (), проще всего сделать это:
foo()
Все остальное - просто ненужное осложнение. Я подозреваю, что вы упростили свой пример, пока он не имеет смысла.
Редактировать: ОК, значит, вы пытаетесь изменить чей-то другой код. Нет, невозможно преобразовать переменную в метод универсальным способом. Вы можете заменить его объектом, который будет возвращать различные переменные, которые он использует, таким образом, что последовательно будет вызываться некоторый метод python.
barrio.py:
bar = "Некоторая строка"
fool.py:
import random
class Foo:
def __str__(self):
return str(random.random())
import barrio
barrio.bar = Foo()
Теперь запустите python:
>>> import fool
>>> import barrio
>>> print barrio.bar
0.783394625457
>>> print barrio.bar
0.662363816543
>>> print barrio.bar
0.342930701226
>>> print barrio.bar
0.781452467433
Это работает, потому что print вызовет str для объекта, так как это не строка. Но в целом нет, это невозможно.