-
-
1. Classes in Python
- clean class definitions
- Python classes vs. Java/C++ classes
- dataclasses
- overload operators (including __getattr__ and __setattr__)
- static/class methods and properties
- inheritance and mixins
- Abstract Base Classes
- metaclasses: how Python creates objects
- meaning of the __slots__ attribute
2. Organizing larger programs
- absolute vs. relative module imports
- sys.path, PYTHONPATH and environments
- namespace packages and __init__.py
- monkey patching
- how Python manages namespaces / refrence counting
- where to keep custom exceptions
- global vs local variables
- defining custom loggers
3. Functional patterns
- using mutable parameters cleanly
- *args and **kwargs parameters
- type annotated functions
- inspecting type annotations
- using predefined decorators
- function and class decorators
- nested functions / closures
- generator functions
- iterators vs. generators
- functional composition (partial / map / reduce)
- async functions
4. Best Practices
- tests with unittest
- tests with pytest / robot
- organizing test data
- monkey patching and mocking in tests
- context managers
- top 10 testing resources software/hardware/executables
- top 10 development tools
- top 10 libraries