Python beyond the basics: Pythonic design patterns
Building on your knowledge of OOP
Much has been written about design patterns—reusable solutions to common problems involving classes and objects. But most of it was written for languages like Java, C++, and C#. While these patterns all apply to Python, they apply differently because as a language, Python has a very different set of features.
In this hands-on three-hour course, expert Pythonista Aaron Maxwell helps you build on your existing knowledge of object-oriented programming to learn how Python’s dynamic type system, first-class functions, and other compelling features translate into uniquely Pythonic applications of traditional design patterns.
What you'll learn-and how you can apply it
By the end of this live, online course, you’ll understand:
- How design patterns in Python differ from Java, C++, and C#
- Properties in Python—how they work, the different design patterns based on them, and the implications for refactoring
- The observer pattern and its uniquely Pythonic variations
- Factory patterns in Python and how to extend them across inheritance hierarchies
And you’ll be able to:
- Write Python code that’s concise, readable, and highly maintainable
- Advise your teammates on potently powerful Python patterns and crucial best practices
- Apply the design patterns covered in this class to your Python code in powerful new ways
- Better understand other design patterns you encounter in relation to Python’s object mode
This training course is for you because...
- You're a web developer using Python frameworks, and you want to expand your knowledge.
- You’re a QA engineer using Python for scripting and writing tests, and you want to explore design patterns in more detail.
- You’re a data scientist using Python, and you want to get more done, faster.
- You’re a software engineer aiming to be more productive and write more robust, reliable, and maintainable Python code.
- You want to improve your Python knowledge to ace an interview or land that dream job.
- You want to deeply understand the Python language and ecosystem and how to use it to its fullest potential.
- Complete the Python Labs Prep
- An intermediate understanding of Python (e.g., the ability to write simple Python programs using lists, dictionaries, and classes) and Python object-oriented programming (equivalent to Pythonic Object-Oriented Programming)
- Familiarity with defining your own classes and methods and creating simple inheritance hierarchies
Materials or downloads needed in advance:
A machine with Python 3 (3.6+) or Python 2.7 installed along with the Python-aware IDE or editor of your choice (e.g., PyCharm)—You will be able to do the programming exercises in either version of Python. Since almost everything in the course applies to both versions, the class will be taught primarily using 3, pointing out where 2.7 is different as we go along. You should be able to open a Python interactive interpreter on the command line and run simple programs ("python3 helloworld.py") either on the command line or in your IDE. On Windows, you will need to set your system path.
Introduction to Python (video)
Pythonic Object-Oriented Programming (live online training)
Python Cookbook, 3rd edition (book)
Become Fluent in Python (Learning Path)
Magically Crafting Your Own Python Syntax (Oriole online training)
Fluent Python: The Power of Special Methods (Oriole online training)
Python: The Next Level (live online training)
About your instructor
Aaron Maxwell is author of the book "Powerful Python: The Most Impactful Patterns, Features, and Development Strategies Modern Python Provides." As a software engineer, he has worked in devops, test automation, and machine learning, and now divides his time between coding, writing, and teaching
The timeframes are only estimates and may vary according to how the class is progressing
This course will cover:
- Python’s object syntax
- Overview of Python object model special features
- Properties for clean design and refactoring
- Special methods
- How OOP in Python is fundamentally different from other languages
- The observer pattern
- The factory patterns