I've been experimenting to deepen my understanding of Python's behavior in
regard to metaclasses, descriptors, and other meta-programming stuff. In the
process, I have come across a behavior that is presumably by design but cannot
be inferred from anything I can find in the official documentation. Because of
that, I can't be certain whether the behavior I'm seeing is by design or just
happens to work this way in CPython.
What I'm seeing is that, if a class and its metaclass both have assigned
descriptors to the same attribute name, then the descriptor in the metaclass is
employed when interacting with the attribute of the class, and the descriptor
in the class is employed when interacting with an instance of the class.
This allows things that would not otherwise be possible, such as having a
setter fat the class level or having different getters for a class and its
instances.
Does anyone know of anywhere in the Python docs or PEPs that have the
information needed to predict this behavior?
--
https://mail.python.org/mailman3//lists/python-list.python.org