-----Original Message----- From: Howard Shaw [mailto:howard@tyroldata.com] Sent: Friday, September 24, 1999 3:07 PM To: zope@zope.org Subject: [Zope] ExtensionClass
<snip>
On to the question:
Is there an equivalent for issubclass and isinstance that will work on ExtensionClasses?
A patch has been submitted for this to work with Python 1.6
I am writing a WxPython/ZODB app that will maintain a tree of objects, and dynamically select a class to generate an editable view of the object based on its class. These viewer classes attach to object classes, such that they can view any given object, or its descendants. However, all my classes, to be stored in the ZODB, must subclass from Persistence.Persistent, which makes them Extension Class objects from Python's perspective, whereupon it refuses to test for inheritance or instantiation.
From what I understand, all classes, whether or not they subclass an ExtensionClass or not, are == <type 'class'>. If a class object is an ExtensionClass, it's __class__ == 'ExtensionClass' which is the class of all extension classes.
So to test for inheritence, you can just ask if 'aClass' is in a classes' __bases__. To test for instantiation, you can special case ExtensionClasses (no need after Python1.6) and sniff for __class__. If it doesn't have one, it's a regular python class. If it does have one, and it's value is just ExtensionClass, then it's an ExtensionClass. Otherwise it's an instance. -Michel