我在做类似的事情

class Parrot(object):
    def __init__(self):
        self.__voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self.__voltage

但是它将电压属性视为int,所以当我调用like so时
p = Parrot()
print(p.voltage())

我明白了
TypeError: 'int' object is not callable

我试过用一个和两个下划线来破坏电压属性名称。

最佳答案

getter的关键是它返回值而不被调用。p.voltage返回整数对象,因此运行p.voltage()相当于100()或其他操作。
在某些情况下,您仍然需要调用属性的值,例如该值本身是一个函数。但你不需要它。

关于python - Python属性getter和setter装饰器不可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17372152/

10-12 20:25