Python使用@property装饰器

示例

的@property装饰可被用来定义在一个类中的方法,其作用象属性。一个可能有用的示例是在公开可能需要初始(昂贵)查找并随后需要简单检索的信息时。

给定一些模块foobar.py:

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

    @property
    def bar(self):
        ifself.__baris None:
           self.__bar= some_expensive_lookup_operation()
        return self.__bar

然后

>>> from foobar import Foo
>>> foo = Foo()
>>> print(foo.bar)  # 这将需要一些时间,因为初始化后bar为None
42
>>> print(foo.bar)  # 由于bar现在具有值,因此速度更快
42