[Python-ideas] The @update operator for dictionaries

Chris Angelico rosuav at gmail.com
Sat Mar 9 11:33:47 EST 2019


On Sun, Mar 10, 2019 at 3:16 AM Jonathan Fine <jfine2358 at gmail.com> wrote:
>
>  Anders Hovmöller wrote:
>
> > I don't understand what you mean. Can you provide examples that show the state of the dicts before and after and what the syntax would be the equivalent of in current python?
>
> If a.__radd__ exists, then
>     a += b
> is equivalent to
>     a = a.__radd__(b)
>
> Similarly, if a.__iat_update__ exists then
>     a @update= b
> would be equivalent to
>     a = a.__iat_update__(b)
>
> Here's an implementation
>     def __iat_update__(self, other):
>         self.update(other)
>         return self
>
> Thus, 'b' would be unchanged, and 'a' would be the same dictionary as
> before, but updated with 'b'.

With something this long, how is it better from just writing:

a = a.update_with(b)

? What's the point of an operator, especially if - by your own
statement - it will backward-incompatibly change the language grammar
(in ways that I've yet to understand, since you haven't really been
clear on that)?

ChrisA


More information about the Python-ideas mailing list