a naso avrei detto che questo avrebbe dato lo stesso problema >>> T = ([],) >>> T[0].__iadd__([3]) [3]
>>> T = ([],) >>> T[0] += [3] Traceback (most recent call last): File "<ipython-input-62-a940dfebc38f>", line 1, in <module> T[0] += [3] TypeError: 'tuple' object does not support item assignment http://docs.python.org/2/reference/datamodel.html?highlight=iadd#object.__iadd__ >>> T = ([],) >>> T[0] = T[0].__iadd__([3]) Traceback (most recent call last): File "<ipython-input-65-d9efb2b8bc4b>", line 1, in <module> T[0] = T[0].__iadd__([3]) TypeError: 'tuple' object does not support item assignment >>> T ([3],) ma dalla ducumentazione si capisce che object.__iadd__ dovrebbe/*potrebbe* ritornare self o un altro oggetto il che lascia fuori l'assegnamento, potremmo dire che l'assegmanento è decisamente inutile se l'oggetto ha una implementazione dell'__iadd__ che ritorna self, ma anche no. in conclusione è veramente brutto e allo stesso tempo meraviglioso 2013/1/4 Davide Alberani <d...@mimante.net> > 2013/1/4 Marco Beri <marcob...@gmail.com>: > > > > Chi indovina cosa stampa l'ultima riga di questo snippet senza > eseguirlo? Si > > accettano tentativi :-) > > Non è un glitch. Prima estende la lista, > poi fa un assegnamento ad un elemento > di una tupla. Garantito che te lo prendi > nei denti... ma intanto l'estensione alla > lista (tipo mutabile) l'ha fatta. :-) > > Da cui, se ne evince che il metodo extend > delle liste in fondo in fondo non sta lì per > bellezza. ;-) > > Poi ovvio che è un comportamento un poco > inaspettato... io ci ho sbattuto contro qualche > anno fa, e fu divertente. Sì, divertente, diciamo. > > > -- > Davide Alberani <d...@mimante.net> [PGP KeyID: 0x465BFD47] > http://www.mimante.net/ > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python