[Zope] Modifying __bases__

Dan Pozmanter dan at siteworx.com
Fri May 20 17:10:30 EDT 2005


Out of curiosity, I've noticed the word "evil" attached to patching
of various and monkey kinds.  Not "bad", or "unwise", but "evil",
implying a morality associated with the act.

What is morally wrong with modifying live objects in a dynamic language
to achieve desired functionality?
The idea is "I want to modify the zope core in a way that survives
version to version, yet does not
impose a specific use case on all zope users".

-----Original Message-----
From: Tino Wildenhain [mailto:tino at wildenhain.de] 
Sent: Friday, May 20, 2005 2:38 PM
To: Dan Pozmanter
Cc: Andreas Jung; zope at zope.org
Subject: RE: [Zope] Modifying __bases__

Am Freitag, den 20.05.2005, 13:48 -0400 schrieb Dan Pozmanter:
> Well, when I run it, I am able to do the following:
> 
> ------------------------------------
> class A: 
> 	pass
> 
> class B(A):
> 	pass
> 
> b = B()
> 
> B.__bases__ = ()
> 
> print B.__bases__
> ------------------------------------
> 
> Not so on the version that comes with zope.
> (B.__bases__ will remain unchanged.)
> 
> What I aim to do is have the User Object inherit from a custom class 
> (AlienUser).

Well, you can just inherit with a class from zopes extension classes.
You cannot modify the class bases like this with extension classes.

You can work around that like I did with the history (monkey) patch:

http://www.zope.org/Members/tino/PatchHistory/view

Otherwise it sounds evil and you failed to show the true motivation with
your example above.

Tino.

PS: Votes for a true implementation in current zope instead
    of the monkey patch? If so, tell me.





More information about the Zope mailing list