Software Design for Python Programmers shows you how to level up from writing Python code to designing Python applications. Following intuitive before and after examples of improved code, youll learn to plan and execute Python applications effectively and avoid bugs associated with unmanaged state, poorly-formed classes, inflexible functions, and more.Great applications take advantage of established design principles and patterns that maximize performance, maintainability, and reliability. This book helps you master the Pythonic approach to architectural principles, such as encapsulation, abstraction, method variation, and more. The examples are in Python, but the techniques will apply to any object-oriented language.In Software Design for Python Programmers, youll learn to:Analyze requirements and plan application architectureEvolve designs through iterative developmentShape Python classes with high cohesion and loose couplingUse decorators to introduce abstraction, enforce constraints, and enrich behaviorApply industry-standard design principles to keep code modular and maintainableChoose and implement the right design patterns for complex challengesAbout the TechnologyGreat software starts with thoughtful design. Youll be a more effective developer if you can decide how data willflow through your applications, create a winning software architecture, and structure functions, classes, and modules before you write a line of code. This book will get you started!About the BookSoftware Design for Python Programmers is a practical guide for creating maintainable, well-structured software in Python. By investigating clear before and after examples, youll discover how even small design choices can have a huge impact on an applications clarity and reliability. As you go, youll learn how to gather requirements, shape a programs architecture iteratively, create clean and reusable abstractions, and select design patterns that solve the real problems youll face on the job.Whats InsideTurn vague requirements into solid designsPython-specific software design techniquesCreate classes with high cohesion and loose couplingAbout the ReadersFor programmers comfortable with Python syntax.About the AuthorRonald Mak is a former NASA senior scientist. Currently, he teaches data science and computer science at San Jose State University. He is the author of Object-Oriented Software Design in C++.Table of ContentsPart 11 The path to well-designed software2 Iterate to achieve good designPart 23 Get requirements to build the right application4 Good class design to build the application rightPart 35 Hide class implementations6 Dont surprise your users7 Design subclasses rightPart 48 The Template Method and Strategy Design Patterns9 The Factory Method and Abstract Factory Design Patterns10 The Adapter and Faade Design Patterns11 The Iterator and Visitor Design Patterns12 The Observer Design Pattern13 The State Design Pattern14 The Singleton, Composite, and Decorator Design PatternsPart 515 Designing solutions with recursion and backtracking16 Designing multithreaded programs