Using the property decorator
suggest changeThe @property
decorator can be used to define methods in a class which act like attributes. One example where this can be useful is when exposing information which may require an initial (expensive) lookup and simple retrieval thereafter.
Given some module 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
Then:
>>> 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
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents