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!
