0

我是 Python 新手。我正在尝试学习 Python 中的 @property 装饰器。这是我的代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class C(object):
    """docstring for C"""
    def __init__(self, foo):
        self._foo = foo

    @property
    def foo(self):
        return self._foo
    @foo.setter
    def foo(self, value):
        self._foo = value

        return self.foo


c = C(1)

print c.foo

print c.foo(2)

在上面的代码中首先print给了我“1”。当我尝试将值设置为 foo 时,会出现以下错误:

Traceback (most recent call last):
  File "sub.py", line 23, in <module>
    print c.foo(2)
TypeError: 'int' object is not callable

如何解决这个错误。我的代码有什么问题?

4

2 回答 2

5

setter 与赋值运算符一起使用=

c.foo = 2

另一个例子是如何c.foo(2)工作的:

In [7]: c = C(lambda x: x*x)

In [8]: c.foo(2)
Out[8]: 4

c.foo(…)首先获取中的值c.foo,然后调用该函数。

于 2013-11-09T06:17:38.417 回答
4

你是不是打算做

c.foo = 2

您可以像使用属性一样使用属性。

于 2013-11-09T06:17:31.323 回答