在某些时候,我遇到了一段代码,用python编写:
class Foo(object):
@Mystery
def bar():
return 5+3
print Foo().bar
哪个打印8.然而我不记得装饰者叫什么。我在想象事物,还是存在?如果它确实存在,它叫什么?
答案 0 :(得分:6)
您正在寻找@property
。
您可能需要阅读how the @property
decorator works。
简而言之,正如您所指出的,您可以使用它来为对象提供动态计算的属性。这在您可能拥有作为属性访问该代码的代码并且您不必将其更改为函数调用的情况下非常有用。
但是默认情况下这是只读的。要允许再次设置值,您可以创建一个setter装饰器。这是一个example on how you might use it in the real world,它还向您展示了如何使用它。