python属性装饰器

Q L*_*Liu 18 python decorator

可能重复:
关于如何在python中使用属性功能的真实世界示例?

我有一个关于@property我在以下代码中看到的装饰器的问题.有人能够完全解释为什么有人会使用@property装饰器吗?我知道@property等价isActive = property(isActive)但是方法属性实际对它的参数做了什么?如果我isActiveInputCell课堂上调用这个方法会发生什么?提前致谢.

class InputCell(object):
    def __init__(self, ix, iy, inputData):
        self.ix = ix
        self.iy = iy
        self.InputData = inputData

    @property
    def isActive(self):
        return self.InputData[self.ix][self.iy]
Run Code Online (Sandbox Code Playgroud)

Tay*_*mon 24

这只是语法糖.它允许方法调用看起来像变量访问或赋值.

一种有用的方法是,如果你想将以前一个简单变量的东西改为实际用其他代码计算或验证的东西.如果您将其设为属性,则可以在不破坏任何现有代码的情况下执行此操作.另一种方法是对象属性的缓存,延迟初始化等.