[Python-ideas] Augmented assignment syntax for objects.
Erik
python at lucidity.plus.com
Tue Apr 25 18:30:01 EDT 2017
On 25/04/17 23:05, Paul Moore wrote:
> 1. Writing out the assignments "longhand" is an unacceptable burden.
There are reasons why augmented assignment was implemented. One of them
was to make the code easier to read:
foil = foil + 1
foil = foi1 + 1
foil += 1
Should one be silly enough to have a "foil" and "foi1" variable in
scope, only one of those is clearly incrementing a variable without
requiring a slightly harder look ;)
It's not about the time taken to type the line. It's about the clarity
of what the line is expressing.
> 2. Using a decorator (which can be written directly in your project,
> doesn't even need to be an external dependency) is unacceptable.
All of the decorators (or other language tricks that modify the object's
dict) suggested so far assume that ALL of the method's arguments are to
be assigned. I do not want that. I want to be able to say:
def __init__(self, foo, bar, baz, spam):
self .= foo, bar, spam
self.baz = baz * 100
It's all still explicit inside the body of the method.
> Add to that the fact that these people would be
> arguing "I want the ability to avoid writing out the assignments, but
> I don't want that capability enough to use a decorator"
As I said above, it's not about the effort writing it out. It's about
the effort (and accuracy) of reading the code after it has been written.
And as I also said above, decorators don't cut it anyway (at least not
those proposed) because they blindly assign ALL of the arguments. I'm
more than happy to hear of something that solves both of those problems
without needing syntax changes though, as that means I can have it today ;)
E.
More information about the Python-ideas
mailing list