[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/)