Chris Angelico wrote: > On Fri, Mar 7, 2014 at 8:33 PM, Duncan Booth > <duncan.booth@invalid.invalid> wrote: >> Is there any reason why tuples need to throw an exception on assigning to >> the element if the old value and new value are the same object? > > It'd be easy enough to implement your own tuple subclass that behaves > that way. Try it! See how many situations it actually helps.
>>> class T(tuple): ... def __setitem__(self, index, value): ... if value is not self[index]: ... raise TypeError("{} is not {}".format(value, self[index])) ... >>> for i, k in zip(range(250, 260), range(250, 260)): ... T([i])[0] = k ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "<stdin>", line 4, in __setitem__ TypeError: 257 is not 257 I'm not sure "help" is the right word here ;) -- https://mail.python.org/mailman/listinfo/python-list