Refactoring. Add ImmutablePoint.
class Signal:
"""Simple implementation of signal/slot concept.
In signalling class, add attribute with "sig_" prefix:
self.sig_clicked = Signal()
In listening class, add normal method, e.g. "close()" and connect it, e.g:
button.sig_clicked.connect(window.close)
When button gets clicked, it should call the signal:
self.sig_clicked()
Then window.close() will be called.
"""
def __init__(self):
self._handlers = []
def __call__(self, *args, **kwargs):
"""Emit the signal to all connected handlers."""
for handler in self._handlers:
handler(*args, **kwargs)
def connect(self, handler):
if not handler in self._handlers:
self._handlers.append(handler)
def disconnect(self, handler):
self._handlers.remove(handler)