たろマーク (はてなブックマーク)
-
[ api ][ phone ][ webservice ]
- Colorful Bokeh Effect in Pixelmator | Abduzeedo | Graphic Design Inspiration and Photoshop Tutorials
[ pixelmator ] -
[ pixelmator ]
-
[ python ] 結構ボリュームあるw python のみならず、チームの開発サイクルとか、実際にどう活用していくかと言うことが書いてありそうで wktk
■ Observer パターン
今日はここまでー。元ネタは ruby の Observable モジュールを perl + moose で模倣した自分の記事。
ref. [designpattern][moose][perl] perl で Observer パターン
# -*- coding: utf-8 -*-
import sys
import time
import datetime
class Observable():
def __init__(self):
self.__observers = []
self.__state = False
def is_changed (self):
return self.__state
def changed (self):
self.__state = True
def notify_observers (self, args):
if not self.is_changed():
return
self.__state = False
for observer in self.__observers:
try:
observer.update(args)
except Exception, inst:
print type(inst)
print inst.args
print inst
def add_observer(self, obj):
self.__observers.append(obj)
class Tick(Observable):
def start (self):
while True:
now = datetime.datetime.now()
self.changed()
self.notify_observers([now.hour, now.minute, now.second])
time.sleep( 1.0 - (datetime.datetime.now().microsecond / 1000000.0) )
class TextClock():
def update(self, time):
t = "\e[8D%02d:%02d:%02d\n" % tuple(time)
sys.stdout.write(t)
if __name__ == '__main__':
tick = Tick()
tick.add_observer( TextClock() )
tick.start()
TextClock で、前に表示したのを削除して新しく表示させるのがうまくいかなかった。このあたりよく分かってないな……。






