Pythonにはイベントを定義する構文がないから困った。
そんなときはadd_イベント名(self, handler)、remove_イベント名(self, handler) を実装する。
例えば、INotifyPropertyChangedインターフェースのPropertyChangedイベントだとこう。
class NotifyObject(INotifyPropertyChanged): def add_PropertyChanged(self, handler): if not hasattr(self, "_propertyChangedHandlers"): self._propertyChangedHandlers = [handler] else: self._propertyChangedHandlers.append(handler) def remove_PropertyChanged(self, handler): if not hasattr(self, "_propertyChangedHandlers"): self._propertyChangedHandlers = [] else: try: self._propertyChangedHandlers.remove(handler) except ValueError: pass def RaisePropertyChanged(self, propertyName): if not hasattr(self, "_propertyChangedHandlers"): self._propertyChangedHandlers = [] else: for handler in self._propertyChangedHandlers: handler(self, PropertyChangedEventArgs(propertyName))
こんな感じでイベントハンドラの管理も自分でやる。