def __iadd__(A,B): A=A+B; return A --------------------------------------- v=vettore(2,3,5); w=vettore(1,0,8) v+=w print v.coeff() [3.0, 3.0, 13.0] --------------------------------------- class lista: def __init__(A,*v): A.elementi=v def __lshift__(A,n): return A.elementi[n] def __pos__(A): s=0 for x in A.elementi: s+=x return s a=lista(3,5,9,6,4) print a<<2, +a # 9 27 class cerchio: def __add__(A,B): print '***' def __pos__(A): print 'Ciao.' u=cerchio() u+u # *** +u # Ciao. --------------------------------------- def __and__(A,B): return A.x*B.x+A.y*B.y+A.z*B.z a=vettore(3,2,5); b=vettore(6,1,2) print a & b # 30 --------------------------------------- def __and__(A,B): s=0 for x,y in zip(A.coeff(),B.coeff()): s+=x*y return s --------------------------------------- a=vettore(3,5,7) print a --------------------------------------- def __str__(A): return '%.2f %.2f %.2f' \ %(A.x,A.y,A.z) --------------------------------------- a=vettore(3,5,7) print a # 3.00 5.00 7.00 --------------------------------------- def scalare (a,b): return a.x*b.x+a.y*b.y+a.z*b.z a=vettore(1,3,9); b=vettore(7,2,4) print scalare(a,b) # 49.0 --------------------------------------- def __call__(A,x,y,z): A.x=float(x); A.y=float(y) A.z=float(z) --------------------------------------- a=vettore(3,5,7) print a # 3.00 5.00 7.00 a(8,2,1) print a # 8.00 2.00 1.00 --------------------------------------- def __init__(A,x,y,z): A(x,y,z) def __call__(A,x,y,z): A.x=float(x); A.y=float(y) A.z=float(z) --------------------------------------- class cerchio: def __call__(A,parametri): ... A.punti=... def __pos__(A): disegna(A.punti) a=cerchio() a(x,y,r); +a a(u,v,s); +a --------------------------------------- a=vettore(7,3,5); b=vettore(2,8,1) print vettore.__add__(a,b) # 9.00 11.00 6.00