(method_names)
| 1 | def ObserverProxy(method_names): |
| 2 | class Proxy: |
| 3 | def __init__(self): |
| 4 | self._observers = [] |
| 5 | def add_observer(self, observer): |
| 6 | self._observers.append(observer) |
| 7 | def remove_observer(self, observer): |
| 8 | self._observers.remove(observer) |
| 9 | |
| 10 | def create_method_proxy(method_name): |
| 11 | def method_proxy(self, *args, **kwargs): |
| 12 | for observer in self._observers: |
| 13 | getattr(observer, method_name)(*args, **kwargs) |
| 14 | return method_proxy |
| 15 | |
| 16 | for method_name in method_names: |
| 17 | setattr(Proxy, method_name, create_method_proxy(method_name)) |
| 18 | |
| 19 | return Proxy() |
| 20 | |
| 21 | if __name__ == "__main__": |
| 22 | # usage example |
no test coverage detected