"Neal Becker" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > class X (object): > pass > > X() += 2 > >> SyntaxError: can't assign to function call > > Suppose I actually had defined __iadd__ for class X. Python says this > syntax is invalid. I wish is wasn't.
If you translate to x() = x() +2, with x called just once, it does not make sense. You can bind to names and slots in compound objects, but not to objects. > Here's where I might use it. Suppose I have a container class. Suppose > I > could make a slice of this container, like so: > > c = Container() > s = Slice (c, 0, 10) > > where "Slice" is a class. Then: > > s += 2 > > Would perform iadd on the slice of the container. A convenient syntax > would > be: > > Slice (c, 0, 10) += 2 If this were made to work, the unbound object you are making an 'assignment' to, purely for side effect, would disappear. So if you don't want a separate object to be named and kept around, give your container a sliceadd method: c.sliceadd((0,10), 2) > > Does anyone else think this would be a good addition to Python? I don't. Augmented assigment is confusing enough to many. Terry Jan Reedy _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com