[Zope] Override a method of an instance in the ZODB?

Small Business Services toolkit at magma.ca
Thu May 27 16:19:39 EDT 2004


From: "Alec Mitchell" <apm13 at columbia.edu>
> Hello zope gurus,
>
> I'm wondering if it is possible to override a method on a single instance
of
> an object in the ZODB.  My suspicion is no, but it doesn't hurt to ask.
> Specifically, I've tried:
>
> def userFolderDelUsers(self, names):
>     pass
>
> from types import MethodType
> setattr(acl_users, 'userFolderDelUsers', MethodType(userFolderDelUsers,
> acl_users, acl_users.__class__))
>
> Which works fine until the transaction gets committed, at which point it
fails
> with "TypeError: can't pickle function objects".  Which seems pretty much
> like a lost cause.  Can you only do this at the class level?  Is there an
> unrelated way to accomplish the same goal (overriding a method, without
> monkeypatching or subclassing)?

How about simple acquisition?

eg

Folder A
   |
   | --Method AAA
   | --Folder B
          |
          |-- Method AAA

Method AAA in Folder B will be found by acquisition before Method AAA in
Folder A (assuming you set up the path that way).


Jonathan






More information about the Zope mailing list