# Copyright 2020 (c) Anna Schumaker. class Publisher: def __init__(self): self.subscribers = set() def publish(self, *args): funcs = self.subscribers.copy() for func in funcs: func(*args) def register(self, func): self.subscribers.add(func) def reset(self): self.subscribers.clear() def unregister(self, func): self.subscribers.discard(func)