> But that doesn't change the behaviour of the *name* "a", it
> only sets the value it is bound to. Nothing stops anyone from saying:
>
> a = 42
>
> and re-binding the name to another value which is no longer a Char.
> Python has no default support for running custom code when binding
> arbitrary names to a value. To get this sort of thing to work, you are
> limited to attributes, using the descriptor protocol.
This is exactly my point. When they implemented descriptors (2.2) they did that to add to the new-style class system. I think they did a great job, but namespaces were overlooked in my opinion. Why should we be limited to class attributes when using descriptors? Any namespace which contains a '.__dict__' content mapping should be able to hold descriptors in my opinion. If this has been discussed before, then please link me to the relevant discussion, I'd love to read the points made.