Source code for mechmat.subject
import logging
[docs]class Subject:
def __init__(self, prop, *observers):
self.property = prop
self.observers = list(observers)
[docs] def register(self, *observers):
if hasattr(observers, '__iter__'):
self.observers.extend(observers)
else:
self.observers.append(observers)
[docs] def send(self, instance, key):
for obs in self.observers:
obs.notify(instance, key)
[docs] def notify(self, instance, key):
logging.debug(
'Observer {} notified for change of {} property in material {}'.format(self.property, key, instance))
setattr(instance, self.property, key)