<s> class O ( object ) : <EOL> pass <EOL> o = O ( ) <EOL> def _add ( ) : <EOL> return o . x + o . y <EOL> def add ( x , y ) : <EOL> o . x = x <EOL> o . y = y <EOL> return _add ( ) <EOL> print add ( <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> print add ( <NUM_LIT:0> , <NUM_LIT> ) <EOL> print add ( <NUM_LIT:0> , <NUM_LIT:3> ) <EOL> print add ( <NUM_LIT:1.0> , <NUM_LIT:4> ) <EOL> print add ( <NUM_LIT:0> , <NUM_LIT:5> ) <EOL> print add ( <NUM_LIT:1.0> , <NUM_LIT> ) <EOL> class C ( object ) : <EOL> def __init__ ( self , n ) : <EOL> self . n = n <EOL> def add1 ( self , rhs ) : <EOL> print "<STR_LIT>" <EOL> return self . n + rhs . n <EOL> def add2 ( self , rhs ) : <EOL> print "<STR_LIT>" <EOL> return - self . n + rhs . n <EOL> def add3 ( self , rhs ) : <EOL> print "<STR_LIT>" <EOL> if rhs . n == <NUM_LIT:6> : <EOL> return NotImplemented <EOL> return self . n + rhs . n <EOL> class D ( object ) : <EOL> def __init__ ( self , n ) : <EOL> self . n = n <EOL> def __radd__ ( self , rhs ) : <EOL> print "<STR_LIT>" <EOL> return <NUM_LIT:1> + self . n + rhs . n <EOL> C . __add__ = add1 <EOL> print add ( C ( <NUM_LIT:1> ) , C ( <NUM_LIT:1> ) ) <EOL> print add ( C ( <NUM_LIT:1.0> ) , C ( <NUM_LIT:2> ) ) <EOL> C . __add__ = add2 <EOL> print add ( C ( <NUM_LIT:1> ) , C ( <NUM_LIT:3> ) ) <EOL> print add ( C ( <NUM_LIT:1> ) , D ( <NUM_LIT:4> ) ) <EOL> C . __add__ = add3 <EOL> print add ( C ( <NUM_LIT:1> ) , D ( <NUM_LIT:5> ) ) <EOL> print add ( C ( <NUM_LIT:1> ) , D ( <NUM_LIT:6> ) ) <EOL> print add ( C ( <NUM_LIT:1> ) , D ( <NUM_LIT:7> ) ) <EOL> class V ( object ) : <EOL> def __init__ ( self , x , y , z ) : <EOL> self . x = x <EOL> self . y = y <EOL> self . z = z <EOL> def dot ( self , other ) : <EOL> print self . x , other . x , self . y , other . y , self . z , other . z <EOL> return self . x * other . x + self . y * other . y + self . z * other . z <EOL> v0 = V ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> print v0 . dot ( v0 ) <EOL> v = V ( <NUM_LIT:1> , <NUM_LIT:1.0> , <NUM_LIT:1> ) <EOL> print v . dot ( v0 ) <EOL> print v0 . dot ( v ) <EOL> print v . dot ( v ) </s>
