Design Patterns in Python