2015-02-24 2 views
2

Я не собираюсь на самом деле делать это; Мне просто интересно, возможно ли это. Я подозреваю, что это не так.Свойство/дескриптор класса без класса Python?

Возможно ли в Python создавать переменную, которая разрешает результат вызова функции каждый раз, когда к ней обращаются, но без доступа к ней через посреднический объект? С классом я могу это сделать:

class A: 
    i = 0 
    @property 
    def data(self): 
     self.i += 1 
     return self.i 

>>> a = A() 
>>> a.data 
1 
>>> a.data 
2 

Но есть некоторые (впрочем Hacky), как я могу устранить класс? то есть:

i = 0 
def func(): 
    global i 
    i += 1 
    return i 
>>> data = some_magic_here(func) 
>>> data 
1 
>>> data 
2 
+1

Возможный дубликат [определение функции python без скобок] (http://stackoverflow.com/questions/7698603/defining-python-function-without-the-brackets) –

ответ

0

Короткий ответ: Нет

Простая переменная никогда не ведет себя как функция в Python. Возможно, существует какой-то «волшебный/хитрый» способ сделать это (обходя обычные ограничения), но это будет нечто, называемое «обезглавливание обезьян» - что-то, что не встречается положительно в сообществе Python.