-
A complete Python OOP pathway from first classes through metaprogramming and custom type design
-
Sixteen detailed project assignments that reinforce difficult concepts through practical coding
-
Live coding, focused lectures, and frequent challenges that turn theory into Pythonic practice
Object-oriented programming helps Python developers model real problems, organize behavior, and create reusable types. A strong grasp of the Python data model also makes code more expressive, maintainable, and consistent with the language’s conventions. The material begins from first principles, making advanced object design accessible even to learners without prior Python experience.
The learning path moves from classes, instance state, methods, dunder methods, properties, and inheritance into slots, dataclasses, descriptors, enumerations, and exception design. It then examines duck typing, dynamic protocols, abstract base classes, multiple inheritance, mixins, method resolution, and class metaprogramming. Detailed lectures, live coding, frequent practice activities, and 16 project assignments connect each concept to an object-oriented solution built with pure Python.
Learners will be able to define custom types, control representation and behavior, extend built-ins, manage attributes, design exception hierarchies, and choose appropriate inheritance or protocol-based approaches. They will also gain a clearer understanding of how Python recognizes and constructs types. By the end of this course, learners will be equipped to write more Pythonic object-oriented code and solve complex design problems with confidence.
Designed for aspiring Python programmers, developers seeking deeper OOP knowledge, and learners ready to move beyond basic syntax into object design. No prior Python knowledge is required because a full introductory appendix is included; learners should be prepared to write substantial amounts of code on a Windows, macOS, or Linux computer.
-
Design Python classes with customized behavior
-
Implement dunder methods and managed properties
-
Apply inheritance, mixins, and method resolution
-
Use dataclasses, slots, enums, and descriptors
-
Build custom exceptions and dynamic protocols
-
Create abstract classes and metaprogrammed types