将函数转换为字段的装饰器是什么?

时间:2014-03-11 03:58:39

标签: python python-decorators

在某些时候,我遇到了一段代码,用python编写:

class Foo(object):
    @Mystery
    def bar():
       return 5+3
print Foo().bar

哪个打印8.然而我不记得装饰者叫什么。我在想象事物,还是存在?如果它确实存在,它叫什么?

1 个答案:

答案 0 :(得分:6)

您正在寻找@property

您可能需要阅读how the @property decorator works

简而言之,正如您所指出的,您可以使用它来为对象提供动态计算的属性。这在您可能拥有作为属性访问该代码的代码并且您不必将其更改为函数调用的情况下非常有用。

但是默认情况下这是只读的。要允许再次设置值,您可以创建一个setter装饰器。这是一个example on how you might use it in the real world,它还向您展示了如何使用它。