Python Advanced Design Patterns