- Foundations of the Python language
- Data structures
- Program flow control
- Writing and reading to a file
- Functions and lambda expressions
- Generating custom modules and packages
- Packages built into the Python language
- The object-oriented programming paradigm
- Unit testing
- Namespaces and scopes
- local, encompassing, global, embedded scope
- 4 pillars of object-oriented programming
- Abstraction, encapsulation, inheritance, polymorphism
- Class attributes
- Class method, @classmethod decorator
- Special methods: new(), init(), repr(), str(), bool(), len(), eq(), hash() and many more
- MRO - Method Resolution Order
- Abstract classes
- LEGB rule
- Use of *args and **kwargs
- Classes and objects
- Visibility of variables (public, protected, private)
- Attributes of instances
- Static method, decorator @staticmethod
- Single inheritance (single inheritance), multiple inheritance (multiple inheritance)
- Use of super()
- ABC class and @abstractmethod decorator