的@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