class _CcidCardObserver(CardObserver): def __init__(self, controller): self._controller = weakref.ref(controller) self._monitor = CardMonitor() self._monitor.addObserver(self) def update(self, observable, tup): (added, removed) = tup c = self._controller() if c: c._update([card.reader for card in added], [r.reader for r in removed]) def delete(self): self._monitor.deleteObservers()