Python 3 Object-oriented Programming - Second Edition: Building robust and maintainable software with object oriented design patterns in Python (English Edition)