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

セッターは代入演算子とともに使用されます=

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 に答える