[issue5621] Add description of special case to "Assignment statements" section

2009-09-16 Thread Georg Brandl

Georg Brandl  added the comment:

The patch submission was correct.

I edited the patch a bit, moved the example from augmented assignment to
the regular assignment and added a link from there to the new section.

Committed in r74822.

--
resolution: works for me -> accepted
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue5621] Add description of special case to "Assignment statements" section

2009-09-08 Thread John Posner

John Posner  added the comment:

George, here is a patch file for this bug. It modifies file
doc/reference/simple_stmts.rst

Please let me know if this was the wrong way to submit the patch file.

--
keywords: +patch
status: pending -> open
Added file: http://bugs.python.org/file14861/assignment_statement.diff

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue5621] Add description of special case to "Assignment statements" section

2009-03-31 Thread Georg Brandl

Georg Brandl  added the comment:

Yes, it says that getattr() is used in the section about augassign; but
there the note you refer to is already present.

--
resolution:  -> works for me
status: open -> pending

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue5621] Add description of special case to "Assignment statements" section

2009-03-31 Thread John Posner

John Posner  added the comment:

The "Assignment statements" section *does* talk about the RHS -- but in
a subtle way:

  For targets which are attribute references, the initial
  value is retrieved with a getattr()

The retrieving of the initial value (maybe "current value" would be
better) occurs on the RHS of the assignment statement.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue5621] Add description of special case to "Assignment statements" section

2009-03-31 Thread Georg Brandl

Georg Brandl  added the comment:

I'm not sure it belongs there, since normal assignments do not say 
*anything* about the RHS.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue5621] Add description of special case to "Assignment statements" section

2009-03-31 Thread John Posner

New submission from John Posner :

The subsection "Augmented assignment statements" includes a note on this
special case:

  a.x += 1

But the parent section "Assignment statements" does not include such a
note, even though it's essentially the same situation. I suggest
replacing the bulleted paragraph that begins "If the target is an
attribute reference" with the following:

-

*   If the target is an attribute reference: The primary expression in
the reference is evaluated. It should yield an object with
assignable attributes; if this is not the case, TypeError is raised.
That object is then asked to assign the assigned object to the given
attribute; if it cannot perform the assignment, it raises an
exception (usually but not necessarily AttributeError).

If the object is a class instance and the attribute
reference occurs on both sides of the assignment operator; for example::

a.x = a.x + 1

... in the RHS expression, ``a.x`` is evaluated with
``getattr()``, which can access either an instance attribute or (if
no instance attribute exists) a class attribute. The LHS target
``a.x`` is assigned with ``setattr()``, which *always* accesses
an instance attribute, creating it if necessary. Thus, the two
occurrences of ``a.x`` do not necessarily refer to the same
variable. If the RHS expression refers to a class attribute, the LHS
creates a new instance attribute as the target of the assignment.
(This description does not necessarily
apply to attributes defined with ``property()``, which are accessed
with user-defined functions instead of ``getattr()`` and ``setattr()``).

See section "Augmented assignment statements" for a similar note on
attribute references.

-

--
assignee: georg.brandl
components: Documentation
messages: 84790
nosy: georg.brandl, jjposner
severity: normal
status: open
title: Add description of special case to "Assignment statements" section
versions: Python 2.6, Python 3.0

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com