
Learn object oriented programming with Python through this course introduction and gain confidence in implementing object oriented programming concepts in Python.
Discover how object oriented programming works and how its four pillars—data abstraction, data encapsulation, inheritance, and polymorphism—apply in practice.
Define a class as a blueprint for a user defined data type, and create objects as instances to store student data, including roll number, name parts, and course.
Define constructors in Python using the __init__ method to initialize class members with an object's x and y coordinates when creating a point instance.
Explore static and non-static (instance) members in Python classes, learn when to share values across objects, and distinguish values specific to every individual object using practical examples.
Demonstrate defining and accessing static and instance variables in Python, using a class with a constructor, and show shared static values across objects.
Learn how to implement static and non-static (instance) members with an employee class, using per employee attributes and a shared total employees counter, plus displaying details.
Explore data abstraction and data encapsulation as pillars of object oriented programming, distinguishing abstraction as identifying relevant data and modeling, and encapsulation as bundling data with methods and restricting access.
Explore how data abstraction and data encapsulation work in practice by building a Python product class with private attributes and methods to set, show, and update price.
Understand inheritance, a pillar of object oriented programming, allowing a derived class to access the base class members and override methods, enabling code reuse without rewriting existing functionality.
Explore inheritance in Python by defining a salesman class that inherits from an employee base class, using super to initialize base attributes, and overriding methods to reveal commission details.
Explore method overriding in Python by redefining a base class method in a derived class with super, and extend the salesman details while reusing base behavior.
Learn how multiple inheritance lets a derived class access features from two base classes, shown with father and mother examples and the use of super.
Demonstrate multi-level inheritance in Python by creating a grandparents–parents–child hierarchy, showing how base and derived class features flow and how methods can be overridden, including method resolution order.
Explore python inheritance and the method resolution order. See how python searches the current class to its bases using left-to-right MRO and view it with __mro__ or mro().
Learn how to use abstract classes and abstract methods in Python 3, when you can't instantiate an abstract class, and enforce implementation in derived classes via inheritance.
Demonstrate implementing abstract classes in Python by defining an abstract base class with abstract method, inheriting from ABC, and overriding methods in derived classes to specify courses offered and addresses.
Convert a traditional Python program into object-oriented programming to manage customer accounts, enforcing a savings minimum balance of 500 and no minimum for current withdrawals.
Convert traditional Python code to object oriented design using an account base class. Derive savings and current classes, override withdrawal, implement deposit, and apply a 10 percent government bonus.
Convert a regular Python script to object oriented programming by implementing an abstract account class and savings and current subclasses with deposits, withdrawals, and a 500 minimum balance for savings.
Explore polymorphism, the ability of an entity to change behavior based on arguments, with examples of integers versus concatenating strings, and note how overloading, overriding, and operator overloading realize polymorphism.
Explore polymorphism with functions by using a common interface to handle multiple data types, demonstrated through coloring shapes and language greetings in English and French.
Learn how to enable operator overloading for user defined objects in Python by implementing special methods like __add__ and __lt__ in a Point class, plus __str__ for display.
Explore object oriented programming concepts such as data abstraction, data encapsulation, inheritance, and polymorphism through practical demos, and learn how reusable, shareable code and secure data boost programmer productivity.
Explore inheritance and composition in Python to build extensible object oriented programs, using is-a and has-a relationships, with an employee management system including payroll and performance management.
Identify is-a inheritance by recognizing common attributes and overridden work methods, using a base class like employee and noting where multiple inheritance applies for roles like waiters.
Explain composition as a has-a relationship using a car and its engine. A composite car accesses engine attributes, while the engine cannot access car attributes, unlike inheritance.
Explore Python inheritance by contrasting default object inheritance with explicit base class usage and demonstrate a custom exception that inherits from Exception and uses super to pass a message.
Define interfaces as a description of an object's attributes and methods in Python, using payroll management to show how different employee types implement a common calculate payroll method through inheritance.
Explore implementing interfaces in Python through a payroll management system demo, building classes such as employee, salary employee, part time employee, and commission employee to compute payroll.
Extend the payroll system to an employee management system by adding a worker interface and four roles—manager, developer, salesperson, and company worker—mapped to salary, commission, and part-time payroll.
Transform a payroll management system into an employee management system by modularizing employees into separate classes—manager, developer, salesperson, and worker—under the I worker interface and track employee performance.
Covers the problems with multiple inheritance in Python, including constructor argument mismatches for a consultant, and shows that changing base class order can resolve the errors.
Explore how method resolution order governs the search path in Python, addressing the diamond problem in multiple inheritance and guiding re-architecting class hierarchies for robust design.
Explore the diamond problem in multiple inheritance and redesign an employee management system with payroll and job role interfaces to avoid conflicts.
Demonstrates practical handling of the diamond problem in Python's multiple inheritance by designing distinct role classes and payroll policies, then integrating them into employee classes.
Develop object oriented programming concepts by building and extending an application, preserving client integrity, then adopt solid programming principles to improve flexibility and design, preparing a redesign with best practices.
Explore solid design principles for object oriented programming, including the single responsibility principle, open closed principle, Liskov substitution principle, interface segregation principle, and dependency inversion principle, with demos in Python.
Learn the single responsibility principle, where a module has one reason to change, and see how separating responsibilities into dedicated classes (registration, logger, email) improves maintainability and testability.
Demonstrate the single responsibility principle with a Python demo that separates concerns: register user details to SQLite, send an email, and log errors, using a facade wrapper.
apply the open closed principle to extend software without modifying existing code, keeping it open for extension but closed for modifications, using inheritance or dependency injection, and abstract loggers.
Explore the open closed principle in Python by implementing a logger that writes errors to a text file and a SQLite database, and extend with a cloud logger via subclassing.
Explore the Liskov substitution principle (LSP) and its role in safe inheritance, showing why subtypes must substitute base types, illustrated by the rectangle versus square example.
Explore the limitations of the Liskov substitution principle in inheritance through a Python demo with rectangle and square, showing how width and height synchronization reveals is-a relationship pitfalls.
Apply the Liskov substitution principle by encapsulating behavior and using tell don't ask; explore shape hierarchies with rectangle, square, and Python's duck typing.
Explains the interface segregation principle, showing how to split fat interfaces into small cohesive ones so clients aren’t forced to implement unused methods, illustrated with Xerox printing and scanning scenarios.
Demonstrate the interface segregation principle by implementing separate interfaces for print, fax, and duplex tasks and composing them across basic, intermediate, and advanced printers.
Understand the dependency inversion principle: high and low level modules depend on abstractions, not details, and use constructor injection to avoid tight coupling with dependency injection.
Demonstrate dependency inversion by injecting authentication implementations via abstractions, using a service.json config to swap fake and db services without tight coupling.
Explore applying solid design principles in object oriented programming with Python through a practical employee management system case study.
In this course you will understand in detail about Object Oriented Programming with Python. The Students who thinks Object Oriented Programming is very complex to understand and also to code after completing this course I can guarantee that you won't be saying OOPs!.. Object Oriented Programming is complex, instead you feel that you are enjoying APIE.
In this course i have explained in detail about the 4 pillars of Object Oriented Programming in detail with multiple demos to understand the concept better.
The second module of this course will be a complete Case Study on Object Oriented Programming in Python by developing an sample application for Employee Management System.
The Third module of this course will explain the SOLID Design Principles implementation using Python, I have explained Single Responsibility Principle (SRP), Open Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP) and Dependency Inversion Principle (DIP)
I can guarantee you that you won't be finding a better course to understand and master Object Oriented Programming with Python and also for Understanding SOLID Design Principles with Python.
I hope you will enjoy the journey of learning Object Oriented Programming with Python along with me.
See you in this course.