Python は 2.6 以降の property でゲッターセッターが使えるらしい。
IronPython 2.6 でも使えるのかな?両方で実験。
#!/usr/bin/env python #-*- coding:utf-8 -*- class Engine(object): """ over 2.6 property getter,setter test """ @property def name(self): return self._name @name.setter def name(self, value): self._name = value print "(%s) get!" % value @name.getter def name(self): print "out" return "name as %s" % self._name if __name__ == "__main__": # static test #Engine.name = "Toyota" #print Engine.name # instance test eg = Engine() eg.name = "Honda" print eg.name
static でも property はアクセスできるけどセッターやゲッターは無視される。
オブジェクト生成を行ったのであれば普通にセッターやゲッターとして使える。
IronPython でも 2.6 なら有効なのが嬉しいですね、まだ 2.6 はベータですが。
getter は書かなくても良い、普通は setter 時に何か event を起こすのに使うものですし。
C# と違い実体は書く必要は無いようです、しかしイマイチ解りにくい書き方ですよね。
これを利用して IronPython で ObservableCollection を作って ListView を…
とやっているんだけーが上手くいかないのでまたこんど。
PropertyChanged は IronPython ではどう書けばいい???
こんな強烈な IronPython 屋さんが日本にいたんだ。
今まで検索に引っかからなかったのは何故だろう、探し方が悪いのか?
とにかく参考にさせてもらおう、メモメモ。
Enjoy!