Bugs item #1306777, was opened at 2005-09-28 12:59 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1306777&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Python Interpreter Core Group: Python 2.4 Status: Open Resolution: None Priority: 5 Submitted By: Mattias EngdegÄrd (yorick) Assigned to: Nobody/Anonymous (nobody) Summary: Augmented assigment to mutable objects in tuples fail Initial Comment: >>> t=(set([2]),) >>> t[0] |= set([7]) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: object does not support item assignment but the contained set is mutable, and in fact: >>> t[0].__ior__(set([7])) set([2, 7]) >>> t (set([2, 7]),) If I use a mutable container (a list) in the first case, it works: >>> u=[set([2])] >>> u[0] |= set([7]) >>> u [set([2, 7])] But note that the list has not been mutated - only the set, so there would be no need for a mutable container. This is highly counter-intuitive - augmented assigment should do in-place operations on mutable types (which it does) and should therefore pose no restriction on the mutability of the container (which fails). ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1306777&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com