[Python-ideas] "Immutable Builder" Pattern and Operator
Paul Moore
p.f.moore at gmail.com
Mon Jan 23 08:26:49 EST 2017
On 23 January 2017 at 13:05, Soni L. <fakedme+py at gmail.com> wrote:
> Yeah but the dotequals operator has many other benefits:
>
> long_name .= __call__ # cast to callable
> long_name .= wrapped # unwrap
> etc
Those don't seem particularly clear to me.
> And it also looks neat.
Well, we have to agree to differ on that one.
Also, the semantics of the proposed operation are very odd. If I
understand your proposal
a .= b(c)
doesn't evaluate b(c) (It can't, as b is a method of a and doesn't
make sense on its own), but rather combines the LHS and RHS with a dot
- so it's defined in terms of rewriting the input rather than as an
operation on the subexpressions. There's no other operator in Python
that I'm aware of that works like this.
What grammar would you allow for the RHS? So far you've shown
LHS .= METHOD(ARGS)
LHS .= ATTRIBUTE
Clearly,
LHS .= EXPR
makes no sense in general (consider a .= 1+1).
On the other hand, what about
LHS .= ATTRIBUTE[INDEX]
? I'm guessing you'd want that allowed?
Frankly, I don't think the benefits are even close to justifying the complexity.
Paul
More information about the Python-ideas
mailing list