
Master object oriented programming with Python by learning abstraction, inheritance, polymorphism, and encapsulation. Build a robust, maintainable app from scratch and improve team communication with UML diagrams.
Join a healthy software community built for beginners to learn together, ask questions, and discuss lessons in a free Discord space created for students.
Explore how object oriented programming focuses on objects and its key features, encapsulation, inheritance, and polymorphism, while showing how code grows, splits into modules, and undergoes refactoring.
Avoid spaghetti code by managing dependencies with a dependency tree and applying object oriented principles—classes, inheritance, encapsulation, polymorphism, and composition—to build modular, readable, and testable Python code using single responsibility.
This exercise uses parallel lists of names and salaries to show how indexing and len in Python can create fragile, misaligned data and risk index errors when lists drift.
Learn UML as the universal modeling language to design Python classes, translate class diagrams into code, and update an employee model with attributes like job title to prepare for inheritance.
Refactor a python oop project to generate two reports, accounting and staffing, by creating print_accounting_report and print_staffing_report functions that print headers and list employees with salaries or job titles.
Move print logic to a separate reporting module and use dependency injection to pass the employees list to accounting and staffing reports, decoupling report code from the main script.
Learn how to remove duplicate code by abstracting common behavior into a base report class and applying polymorphism to call a uniform print_report method across accounting and staffing reports.
Learn composition in Python to add a schedule report, storing start and end times with datetime, and print each employee’s full name and work hours.
Explore how objects and classes in Python use inheritance, encapsulation, and polymorphism, along with composition and aggregation, to build maintainable, testable code with reports and dependency injection.
Explore how object-oriented programming fixes common software engineering problems with inheritance, polymorphism, and composition in practice. Finish by reviewing what to learn next and sharing your thoughts in course review.
Practice oop concepts in Python through a pirates-themed exercise designing a software system to share treasures, and explore the course object oriented pirates programming adventure in Python for free chapters.
Are you a beginning Python programmer who wants to prevent spaghetti code by organizing code better? Do you often have to work with unstructured code that is hard to understand?
Or are you a developer that brings experience from other programming languages and want to learn how to use OOP in Python?
Then this course is for you!
The 'Object Oriented Programming with Python' course guides you through an exercise, starting with a small, naive approach that gradually is turned into a well structured Object Oriented Design. Each step of the journey introduces new challenges, communicates intended changes with UML and uses tools from the OOP toolkit to solve problems.
Target audience
Developers who especially benefit from this course, are:
Beginner Python developers who want to organise their code better by using OOP
Developers that bring experience from another programming language who want to learn using OOP with Python
Developers that inherit spaghetti code from others at work and need bring structure to it
Challenges
You have heard that object oriented programming can help you to structure your code. But many tutorials overwhelm you with technical blah blah and seem to focus too much on how to implement OOP features. But if you do not understand why to do things, you will use OOP without without using its full potential.
This can lead to writing ineffective code or worse: give up on the idea of OOP.
This course is different! It starts with the absolute beginning and introduces common challenges that are solved by using Object Oriented Programming. This way, you will learn OOP from the ground up, step by step.
What can you do after this course?
You will organize your code better so changes in the future do not cause nightmares anymore
You can visualize and communicate your code to your colleagues with UML, before writing a single line of code
Your code will be organized in small, predictable and testable units
Topics
Introduction OOP: Understanding the problems that are solved with OOP
Classes and objects: Create classes, the class initializer, and instantiate objects
UML: Visualize and communicate the class diagrams with the Unified Modeling Language
Inheritance: Prevent duplicate code by creating subclasses
Encapsulation: Prevent access to class information
Dependency injection: Decouple your code by injecting dependencies
Polymorphism: Allow your code to be extended with minimal changes to the system
Composition: Prevent an explosion of subclasses by using composition
Unit testing: Write Unit Tests to test the correctness of your code
Duration
2,5 hour video time. 5 Hours with exercises.
The teacher
This course is taught by Loek van den Ouweland, a senior software engineer with 25 years of professional experience. Loek is the creator of Wunderlist for windows, Microsoft To-do and Mahjong for Windows and loves to teach software engineering.
Students of this course tell me:
* * * * * “An excellent, concise and clear explanation of the basics of OOP. Fantastic course! Thanks Loek.”
* * * * * “This is the Python OOP course I've been searching for a long time. Many courses teach OOP syntax but few courses help you understand the "why", and then followed by the "how". This course does it and also with realistic scenarios that make it more relevant to the workplace. Highly recommended!”
* * * * * “I thought OOP it was really difficult. But through this course, OOP is something that makes coding much readable and robust. I am sure this course will help people who have hard time coding plain and simple.”