2

getter を 2 回実行する (ただし、setter は実行しない) 不正な動作をする iPython があります。

class C(object):
    @property
    def foo(self):
        print 'running C.foo getter'
        return 'foo'
    @foo.setter
    def foo(self, value):
        print 'running setter'

ipython からのログ:

In [2]: c = C()

In [3]: c.foo
running C.foo getter
running C.foo getter
Out[3]: 'foo'

In [4]: c.foo = 3
running setter

環境は

  • Python 2.7.3 (デフォルト、2012 年 12 月 6 日 13:30:21)
  • IPython 0.13.1
  • 最近の dev-tools アップデートを含む OSX ML
  • たくさんのものを持つvenv

これは、プロパティが正常に機能する方法ではないように思われるため、もはやコードの問題ではありません。

4

3 に答える 3