Terry Reedy wrote: > > "Neal Becker" <ndbecker2 at gmail.com> wrote in message > news:ebd2sp$nnv$1 at sea.gmane.org... >> 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. > I guess I confused things with the augmented assignment. It's not a question specific to augmented assignment. There are 2 questions: 1) Should assignment to a temporary object be allowed? 2) Should the syntax for creation of a temporary object be a constructor call?
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4