Relax Syntax for Augmented Arithmetic?

Terry Reedy tjreedy at udel.edu
Sun Jan 18 21:11:46 CET 2009


andrew cooke wrote:
> Context - http://docs.python.org/3.0/reference/datamodel.html?highlight=data
> model#object.__iadd__
> 
> Just a suggestion I thought I'd throw out...  There's a restriction in
> the language implementation on exactly what can go the left of an
> augmented arithmetic expression.
> 
> For example:
>>>> a = 3
>>>> a **= 2
> 
> is ok, but:
>>>> class Foo():
> ...   def __init__():
> ...     self.a = 3
> ...   def __ipow__(self, x):
> ...     self.a **= x
> ...
>>>> Foo() **= 2

Calls return objects and therefore cannot be the target of an 
assignment, augmented or otherwise.  The target of an assignment is a 
name or collection slot, both of which are grammatical constructs, not 
objects.




More information about the Python-list mailing list