我正在尝试使用如下的属性 setter 。我正在按照这里的示例进行操作:
How does the @property decorator work?

class Contact:
    def __init__(self):
        self._funds = 0.00

    @property
    def funds(self):
        return self._funds

    @funds.setter
    def funds(self, value):
        self._funds = value

setter/getter 工作正常
>>> contact = Contact()
>>> contact.funds
0.0

但我遗漏了一些关于二传手的东西:
>>> contact.funds(1000.21)

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/doctest.py", line 1315, in __run
    compileflags, 1) in test.globs
  File "<doctest __main__.Contact[2]>", line 1, in <module>
    contact.funds(1000.21)
TypeError: 'str' object is not callable

我在这里做错了什么?

最佳答案

只需使用 contact.funds = 1000.21 语法。它将使用 @funds.setter 进行设置。

我无法重现您的 'str' object is not callable 错误,而是收到 'float' object is not callable 错误。有关它如何运行的更多详细信息将有助于诊断。无论如何,原因是 contact.funds 会给你 contact._funds 的值,它不是一个可调用的对象,因此是错误的。

10-07 18:51