5 ms·
How important is metaprogramming to Python? Frankly, in my 16+ years as Python developer, I have never seen anything that can be remotely described as metaprogr
by jdimov9 11y ago
How important is metaprogramming to Python? Frankly, in my 16+ years as Python developer, I have never seen anything that can be remotely described as metaprogramming in Python, except in academic code and experimental GitHub projects.
- chc 11y agoThat seems like a pretty fair label for what decorators do.
- rudolf0 11y agoThey are a form of metaprogramming, but other than decorators, Python generally discourages other kinds of metaprogramming. Metaclasses are reserved for very specific use-cases, and monkey patching or re-opening class definitions are almost always considered anti-patterns.
- agentultra 11y agoYou've probably used it without knowing. It's not typically useful in application code but quite useful in libraries. The ABC module, collections, frozenset. Basically anywhere we add custom types or generate new classes to instantiate.
- chc 11y agoThat surprises me. What does frozenset have to do with metaprogramming? I thought it was just a variant of a hash table or something like that.
- agentultra 11y agoThat's an oops on my part. Chalk it up to a baby who likes to wake up at 4:45am and a toddler who wakes up at 7. frozenset is just a built-in immutable set type with a nice hashing algorithm for the kinds of workloads you'd expect. It's defined in Objects/setobject.c and is a nice read. I was just rambling and I've used frozenset in metaprogramming code when constructing classes via decorators to implement Lattice types with decorated monotone/morphism methods. Sorry for the confusion!