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