Implementation

There are many ways to implement Chain of Responsibility in Python, but my favorite implementation is the one by Vespe Savikko [j.mp/savviko]. Vespe's implementation uses dynamic dispatching in a Pythonic style to handle requests [j.mp/ddispatch].

Let's implement a simple event-based system using Vespe's implementation as a guide. The following is the UML class diagram of the system:

Implementation

The Event class describes an event. We'll keep it simple, so in our case an event has only name:

class Event: 
    def __init__(self, name): 
        self.name = name 

    def __str__(self): 
        return self.name 

The Widget class is the core class of the application. The parent ...

Get Mastering Python Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.