<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4134.100" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2><FONT face=Courier>Hi!</FONT></FONT></DIV>
<DIV><FONT size=2><FONT face=Courier></FONT></FONT> </DIV>
<DIV><FONT size=2><FONT face=Courier>If I am missing a point here, what could it
be? Watch the hot spots (***)</FONT></FONT></DIV>
<DIV><FONT face=Courier size=2></FONT><FONT face=Courier size=2><FONT
face=Arial></FONT> </DIV>
<DIV>
<DIV><FONT face=Courier>Frederic</FONT></DIV></FONT></DIV>
<DIV><FONT face=Courier size=2></FONT> </DIV>
<DIV><FONT face=Courier size=2></FONT> </DIV>
<DIV><FONT face=Courier
size=2>#############################################################################</FONT></DIV>
<DIV><FONT size=2><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>
<DIV><FONT face=Courier size=2># Python 2.4, Windows ME</FONT></DIV>
<DIV><FONT size=2><FONT face=Arial></FONT></FONT> </DIV>X = 0, Y = 1
</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>class Vertex (list):</FONT></DIV>
<DIV><FONT face=Courier> def __init__ (self, *coordinates): self [:]
= list (coordinates [0:2])</FONT></DIV>
<DIV><FONT face=Courier> def __add__ (self, V): return Vertex
(self [X] + V [X], self [Y] + V [Y])</FONT></DIV>
<DIV><FONT face=Courier> def __iadd__ (self, V): self [X] += V [X];
self [Y] += V [Y]</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1 = Vertex (1, 2)<BR>>>> V2 =
Vertex (4, 6)</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1 + V2<BR>[5,
8]
# OK</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1 +=
V2 # ***</FONT></DIV>
<DIV><FONT
face=Courier>V1 #
*** <BR>
# *** died ?<BR>>>> print
V1<BR>None #
*** V1 died !<BR>>>> V2<BR>[5,
8] # V2 is
fine</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier> # Adding three traces to follow the state
of self</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier> def __iadd__ (self,
V):<BR> print 'A',
self<BR> self [X] += V
[X]<BR> print 'B',
self<BR> self [Y] += V
[Y]<BR> print 'C', self</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1 += V2<BR>A [1, 2]<BR>B [5, 2]<BR>C [5,
8] # *** self is still OK
when method
terminates.<BR>
# *** Also shows that operator +=
did call
__iadd__, <BR>
# *** (though the 2.4 doc no longer
mentions it)</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT
face=Arial></FONT><BR><FONT face=Courier># Explicit call works fine</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1.__iadd__ (V2)<BR>A [1, 2]<BR>B [5,
2]<BR>C [5, 8]</FONT></DIV>
<DIV><FONT face=Courier></FONT> </DIV>
<DIV><FONT face=Courier>>>> V1 <BR>[5, 8]
<<<< OK !!!</FONT></DIV>
<DIV><FONT face=Arial></FONT></FONT> </DIV></BODY></HTML>