Hia, trying to modify a class at runtime in Zope is proving hard to do. The first interactive session is a 'Zope debugging session': Python 1.5.2 (#0, Apr 10 2001, 10:03:44) [GCC 2.95.3 20010219 (prerelease)] Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam Welcome to <secure_monitor_channel connected 127.0.0.1:46914 at 90a7df8>
import Zope a=Zope.app() s=a['Secret'] class a1:pass class a2:pass class a3:pass s.__class__.__bases__ = s.__class__.__bases__ + (a1,a2,a3) s.__class__.__bases__ (<extension class App.PersistentExtra.Persistent at 4022be80>, <extension class Products.BTreeFolder.BTreeFolder.BTreeFolder at 84fecf8>, <extension class Acquisition.Acquirer at 4024ac80>, <extension class AccessControl.Role.RoleManager at 82819f0>, <class Products.WarpFramework.product_base_item.product_base_item at 845e058>, <extension class Products.WarpFramework.base_item.base_item at 848f1b0>, <class Products.Secret.imports.imports at 8532fa0>, <class Products.Secret.initializations.initializations at 858ee28>, <class Products.Secret.trash_test.trash_test at 857e2d0>)
where, as you can see, trying to change the base classes doesn't work, while in an ordinary, 'plain python' interactive session, it works: Python 1.5.2 (#0, Apr 10 2001, 10:03:44) [GCC 2.95.3 20010219 (prerelease)] on linux2 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
class a: ... pass ... b=a() class a1: pass ... class a2: pass ... class a3: pass ... b.__class__.__bases__ () b.__class__.__bases__ = b.__class__.__bases__ + (a1,a2,a3) b.__class__.__bases__ (<class __main__.a1 at 8070db0>, <class __main__.a2 at 806ff80>, <class __main__.a3 at 80709f8>) a.__bases__ (<class __main__.a1 at 8070db0>, <class __main__.a2 at 806ff80>, <class __main__.a3 at 80709f8>)
Any clues on what needs to be done to be able to modify a class' base classes at runtime? Thanks & cheers, Morten