marklists at mceahern.com
Sat Sep 28 00:17:18 CEST 2002
[I apologize for not providing context, but I've already deleted my copy of
the specific message I'm replying to.]
The reason a metaclass solution is not possible without modifying the
original code has to do with how the metaclass is determined:
1. First, Python looks for '__metaclass__' within the class' dict.
2. Python uses the metaclass of any base class.
3. Python looks for a global __metaclass__.
4. Python uses the classic metaclass types.ClassType.
With builtin lists and dicts, Python never gets past step 2, so you have to
intervene forcefully with step 1 if you want to override the metaclass of a
builtin class, which means you have to first subclass it:
__metaclass__ = Watched
More information about the Python-list