Is it just Syntactic Sugar ?

Eric Hagemann ehagemann at home.com
Wed May 31 20:45:15 EDT 2000


At the risk of pushing on what seems to be a good idea let's not forget
the 'other "and becomes" operators as well (*=,/=,>>=,<<=...... etc)

Cheers
Eric

"Guido van Rossum" <guido at python.org> wrote in message
news:3935B383.469032AE at python.org...
> I know I shouldn't be posting in this thread, and I won't be there to read
> the
> responses, but here's what I thought would be cool.
>
> x+=y is syntactic sugar for x=x.__add_ab__(y); the "ab" means "and
becomes"
> (an old Algol-68 naming convention; we could pick something better later
> but this will do for the explanation).
>
> For immutable types, this is defined as
>
>   def __add_ab__(self, other):
>       return self+other
>
> For mutable types, this is defined as a self-mutating operation,
> e.g. for lists it could be
>
>   def __add_ab__(self, other):
>       self.extend(other)
>       return self
>
> Thus,
>
>   i = 1
>   i += 1
>
> does the right thing (i is set to 2), and
>
>   a = [0]
>   b = a
>   a += [1,2,3]
>
> modifies the object in place, so that both a and b are [0,1,2,3].
>
> User classes can do whatever their author likes.
>
> A base class can be provided that defines __add_ab__, __sub_ab__ etc.
> in terms of self.__add__, self.__sub__, etc.
>
> --
> --Guido van Rossum (home page: http://www.python.org/~guido/)
> 





More information about the Python-list mailing list