来自Python文档的示例。 Link

class Cell(object):
    def getvalue(self, obj):
        "Recalculate cell before returning value"
        self.recalc()
        return obj._value
    value = property(getvalue)


但是当我这样做

cell = Cell()
cell.value


引发异常

TypeError: getvalue() missing 1 required positional argument: 'obj'


题:
示例代码应如何使用?

最佳答案

我认为您在文档中发现了一个错误。您不能(据我所知)将参数传递给getter类型的属性。我认为例子应该是:

class Cell(object):
    def __init__(self, cell):
        self.cell = cell

    def recalc(self):
        self._value = 100 # this wouldn't really return a static value

    def getvalue(self):
        "Recalculate cell before returning value"
        self.recalc()
        return self._value
    value = property(getvalue)

>>> Cell('A1').value
100

关于python - Python文档中的描述符示例不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26520094/

10-15 11:36