使用属性设置器时出错"'str'对象不可调用"

Mar*_*ine 3 python python-decorators

我正在尝试使用如下的属性设置器.我在这里关注这个例子: @property装饰器是如何工作的?

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
Run Code Online (Sandbox Code Playgroud)

吸气剂工作正常

>>> contact = Contact()
>>> contact.funds
0.0
Run Code Online (Sandbox Code Playgroud)

但是我错过了关于二传手的事情:

>>> 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
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Mox*_*all 6

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

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

  • @ APorter1031虽然我认为问题的答案是不言自明的,但我更新了我的答案以反映这一点. (2认同)