Python Method Resolution Order
Learn how Python's C3 linearization determines method resolution order, how super() works, and how to handle diamond inheritance correctly.
Learn Python programming from scratch
Learn how Python's C3 linearization determines method resolution order, how super() works, and how to handle diamond inheritance correctly.
Learn how Python creates classes step by step: namespace preparation, metaclass invocation, __init_subclass__, and the full lifecycle of the class statement.
Learn how Python resolves names using the LEGB rule, how __dict__ stores attributes, and how closures capture variables from enclosing scopes.
Learn how Python manages memory with reference counting and cyclic garbage collection, plus practical tools for debugging memory issues.
Learn how to use weak references with the weakref module to build caches, registries, and observer patterns that do not prevent garbage collection.
Learn advanced Python type hints: Generic classes, TypeVar with bounds and constraints, Protocol types, and practical patterns for type-safe code.
Learn Python's match-case statement: destructuring sequences, matching mappings, using guards, capturing values, and replacing complex if-elif chains.
Learn what Pythonic code means, why idiomatic Python matters for readability and collaboration, and the core patterns that separate fluent Python from rough translations of other languages.
Learn the essential rules of PEP 8, Python's official style guide, and how to apply consistent formatting that every Python developer recognizes.
Learn how to write clear docstrings, comments, and type hints that make your Python code understandable to other developers and your future self.
Learn to recognize and fix the most common Python anti-patterns that make code harder to read, test, and maintain.
Learn how to use the strategy pattern in Python to make algorithms swappable at runtime, with practical examples using both classes and functions.