Mixing metaclasses and exceptions

Phillip J. Eby pje at telecommunity.com
Thu Dec 30 14:52:44 EST 2004


Jp Calderone wrote:
>   I'd skip that, though.  Your problem doesn't sound "Metaclass!" at
me.
> I wonder if you could elaborate on your usage?  Perhaps there's a
better
> solution which doesn't involve metaclasses at all.

I suspect he could *maybe* get by without the metaclass, but not
without custom descriptors, which don't always work for classic
classes.  In particular, if a Java exception has a static method, he'll
want to map that to a Python classmethod or staticmethod, and as far as
I recall, that stuff just doesn't work with classic classes.

In particular, if a Java class has both a static method and a
non-static method of the same name, there's no way that I know of to
map it into Python using a classic class; you *have* to have a
metaclass with a data descriptor in order to prevent a __dict__ lookup
on the class itself.

The only solution I can think of for this is to only use metaclasses if
you have the static/non-static naming conflicts, or other features of
the mapped class that require using a metaclass or other newstyle-only
features.  Or, alternatively, force all Throwable subclasses to be
implemented as classic classes.  :(




More information about the Python-list mailing list