[Python-Dev] Re: 2.2=>2.3 object.__setattr__(cls,attr,value)
Guido van Rossum
guido at python.org
Tue Nov 18 23:57:51 EST 2003
> In article <1069214841.6983.59.camel at localhost.localdomain>,
> Jeremy Hylton <jeremy at alum.mit.edu> wrote:
>
> > The change was reported on python-dev, but apparently got left out of
> > the NEWS file. Here are the details:
> > http://mail.python.org/pipermail/python-dev/2003-April/034605.html
[Good sleuthing, Jeremy!]
> Thanks! Now that you mention it, I vaguely remember something of that
> discussion. But the messages there seem to be mostly or entirely about
> preventing __setattr__ on built-in types (justifiably called "evil" in
> the thread) while the code I needed this for was to do it on my own
> types. Was there some other discussion about preventing
> object.__setattr__ on non-builtins or was this just an unintended
> consequence? Not that it matters much now, it's done...
Blame it on Carlo Verre. :-)
The fix requires that whenever a built-in type derived from object
overrides __setattr__, you cannot call object.__setattr__ directly,
but must use the more derived built-in type's __setattr__. This is
reasonable IMO, and is now enforced in 2.2.x as well.
> Of course, all of this has led me to realize that my code was
> unnecessarily obscure: I should have just used setattr(cls,...)
:-)
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list