Python Language Usando il decoratore @property


Esempio

Il decoratore @property può essere utilizzato per definire metodi in una classe che si comportano come attributi. Un esempio in cui ciò può essere utile è quando si espongono informazioni che potrebbero richiedere una ricerca iniziale (costosa) e un semplice recupero in seguito.

Dato qualche modulo foobar.py :

class Foo(object):
    def __init__(self):
        self.__bar = None

    @property
    def bar(self):
        if self.__bar is None:
            self.__bar = some_expensive_lookup_operation()
        return self.__bar

Poi

>>> from foobar import Foo
>>> foo = Foo()
>>> print(foo.bar)  # This will take some time since bar is None after initialization
42
>>> print(foo.bar)  # This is much faster since bar has a value now
42