Python Metaprogramming & the Data Model
Parent: Programming Languages · researched 2026-06-02T18:07:28.530Z· 5 sources · 8 concepts · skill python-metaprogramming
Children
- Data model / dunder protocols (__getattr__/__getattribute__/__call__, __slots__) (frontier)
- Descriptors (__get__/__set__/__delete__, data vs non-data precedence, __set_name__) (frontier)
- Class-creation pipeline (namespace → __set_name__ → __init_subclass__ → metaclass) (frontier)
- __init_subclass__ (lightweight metaclass alternative, subclass kwargs, registries) (frontier)
- Metaclasses (type, __new__/__init__/__call__/__prepare__, conflicts, when to use) (frontier)
- Protocols (structural typing, runtime_checkable) vs ABCs (nominal, abstractmethod, __subclasshook__) (frontier)
- Runtime introspection (inspect, typing.get_type_hints, annotationlib/PEP 649) (frontier)
- Discipline — restraint hierarchy, tool-followability (frontier)
Frontier under this node: Class-creation pipeline (namespace → __set_name__ → __init_subclass__ → metaclass), Data model / dunder protocols (__getattr__/__getattribute__/__call__, __slots__), Descriptors (__get__/__set__/__delete__, data vs non-data precedence, __set_name__), Discipline — restraint hierarchy, tool-followability, Metaclasses (type, __new__/__init__/__call__/__prepare__, conflicts, when to use), Protocols (structural typing, runtime_checkable) vs ABCs (nominal, abstractmethod, __subclasshook__), Runtime introspection (inspect, typing.get_type_hints, annotationlib/PEP 649), __init_subclass__ (lightweight metaclass alternative, subclass kwargs, registries)