Technical requirementsClass model and object-oriented programming Accessing super-classesMultiple inheritance and Method Resolution OrderClass instance initializationAttribute access patternsDescriptorsReal-life example – lazily evaluated attributesPropertiesDynamic polymorphismOperator overloadingDunder methods (language protocols)Comparison to C++Function and method overloadingSingle-dispatch functionsData classesFunctional programmingLambda functionsThe map(), filter(), and reduce() functionsPartial objects and partial functionsGeneratorsGenerator expressionsDecoratorsEnumerationsSummary