On Mon, Oct 20, 2003 at 11:55:39AM -0400, Jim Fulton wrote:
I've started work on a new-style ExtensionClass. This is a port of ExtensionClass to new-style classes. This will provide a number of advantages:
- Use of new-style class features (e.g. descriptors) in Zope objects.
woohoo! this all sounds great. One question about new-style ExtensionClass... I wonder if it will address a minor gripe I have with the current ExtensionClass. I spent a few minutes yesterday debugging some code like this: class FooProduct(SimpleItem): def broken(self, obj): if isintance(obj, FooProduct): # never true! raise TypeError def working(self, obj): if obj.meta_type == FooProduct.meta_type: raise TypeError As it turns out, isinstance(FooProduct(), FooProduct) returns false! AFAICT it's ExtensionClass that is responsible for this surprising behavior. The meta_type approach is a decent workaround, but it means I can't automatically detect all subclasses of FooProduct, which is a nice feature of isinstance. -- Paul Winkler http://www.slinkp.com Look! Up in the sky! It's MARTIAN TAB GEOLOGIST! (random hero from isometric.spaceninja.com)