[Zope-dev] New-style ExtensionClass
Paul Winkler
pw_lists at slinkp.com
Mon Oct 20 13:36:05 EDT 2003
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)
More information about the Zope-Dev
mailing list