18

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

@property我对以下代码中看到的装饰器有疑问。有人可以完全解释为什么有人会使用@property装饰器吗?我知道@property这相当于isActive = property(isActive)但是方法属性实际上对它的参数做了什么?如果我要从类中调用该isActive方法,InputCell实际会发生什么?提前致谢。

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]
4

1 回答 1

24

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

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

于 2012-07-16T23:16:22.287 回答