From a0470c84a1b5eab898d882cb281b1cd846a5c745 Mon Sep 17 00:00:00 2001 From: Julien Lengrand-Lambert Date: Thu, 19 Jul 2012 08:11:37 +0200 Subject: [PATCH] Finishes first version of Observer. To be modified to fir with Facemovie --- .gitignore | 1 + Observable.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ Observer.py | 20 +++++++++++++++++++ test.py | 20 +++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 .gitignore create mode 100755 test.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/Observable.py b/Observable.py index e69de29..4d05c49 100644 --- a/Observable.py +++ b/Observable.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import Observer + +class Observable(): + """ + """ + + def __init__(self): + """ + """ + self.val = 1 + self.obs_collection = [] + + + def subscribe(self, observer): + """ + """ + try: + if not(observer in self.obs_collection): + self.obs_collection.append(observer) + print "%s added to collection" %(str(observer)) + else: + print "%s already in collection" %(str(observer)) + + except TypeError: + print "Failed to add %s" %(str(observer)) + + def unsubscribe(self, observer): + """ + """ + try: + if observer in self.obs_collection: + self.obs_collection.remove(observer) + print "%s removed from collection" %(str(observer)) + else: + print "%s not in collection" %(str(observer)) + + except TypeError: + print "Failed to remove %s" %(str(observer)) + + def notify(self, message): + """ + """ + for observer in self.obs_collection: + print "sent %s to %s" %(message, str(observer)) + observer.update(message) + + + def set_val(self, val=1): + """ + """ + self.val += val + self.notify(str(self.val)) diff --git a/Observer.py b/Observer.py index e69de29..f3ca382 100644 --- a/Observer.py +++ b/Observer.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +class Observer(): + """ + """ + + def __init__(self, name="bob"): + """ + """ + self.name = name + + + def update(self, message): + """ + """ + if message is not None: + print "%s received %s" %(self.name, message) + + def __str__(self): + return self.name \ No newline at end of file diff --git a/test.py b/test.py new file mode 100755 index 0000000..d1609cf --- /dev/null +++ b/test.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +from Observer import Observer +from Observable import Observable + +a = Observer("riri") +b = Observer("fifi") +c = Observer("loulou") + +d = Observable() + +d.subscribe(a) +d.subscribe(b) +d.subscribe(b) +d.subscribe(c) + +d.unsubscribe(b) + +d.set_val(3) +d.set_val() \ No newline at end of file