[Python-Dev] Q: playing with 2.2a1 => strange behaviour, or misunderstanding
Guido van Rossum
guido@python.org
Mon, 20 Aug 2001 09:11:15 -0400
> I have tried this with 2.2a1:
> 1. I have not checked the related C code
> 2. I have not checked the bug report list
>
> >>> class C(object): pass
> ...
> >>> c=C()
> >>> c.a=3
> >>> object.__getattr__(c,'a')
> 3
> >>> object.__setattr__(c,'a',6)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: function takes exactly 2 arguments (3 given)
>
> Is that meaningful or a problem?
> I'm trying to understand type/class unification to consider possible jython
> issues.
>
> regards, Samuele Pedroni
This was a 2.2a1 specific problem: in that version, the object class
didn't define a setattr dispatch slot, and object.__setattr__ ended up
returning a *bound* method of the object *class*.
In 2.2a2 this won't be a problem -- the object now defines
__setattr__.
--Guido van Rossum (home page: http://www.python.org/~guido/)