function object.func_default off the console

castironpi at gmail.com castironpi at gmail.com
Thu Apr 26 11:26:03 EDT 2007


On Apr 25, 1:56 am, Peter Otten <__pete... at web.de> wrote:
> Aaron Brady wrote:
> >>>> f.func_defaults[0]
> > [2, 3]
> >>>> f.func_defaults[0]+=[4]
> > Traceback (most recent call last):
> >    File "<stdin>", line 1, in <module>
> > TypeError: 'tuple' object does not support item assignment
> >>>> f.func_defaults[0]
> > [2, 3, 4]
>
> > V. interesting.  Operation succeeds but with a throw.  Er, raise.
>
> This is not specific to func_defaults:
>
> >>> t = ([1],)
> >>> t[0] += [2]
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: 'tuple' object does not support item assignment>>> t
>
> ([1, 2],)
>
> t[0] += [2]
>
> is resolved to
>
> t.__setitem__(t[0].__iadd__([2]))
>
> where list.__iadd__() succeeds but __setitem__() fails (because tuples don't
> have that method).
>
> Peter

Curious why t.__setitem__ is called.  Wouldn't it still refer to the
same list?




More information about the Python-list mailing list