Schüle Daniel wrote: > I am trying to customize the handling of complex numbers > what I am missing is a builtin possibility to create > complex numbers in polar coordinates.... I wrote...: > >>> def polar(r,arg): > ... re, im = r*cos(arg), r*sin(arg) > ... return re + im*1j > then I tried to extend this to a class > >>> class Complex(complex): > ... def __init__(self,x,y,polar=False): > ... if not polar: > ... self.re, self.im = x,y > ... else: > ... self.re, self.im = x*cos(y), x*sin(y)
What you are missing is that complex is an immutable type. You need to fiddle with __new__, not __init__. class Complex(complex): def __new__(class_, x, y=0.0, polar=False): if polar: return complex.__new__(class_, x * cos(y), x * sin(y)) else: return complex.__new__(class_, x, y) Which will produce instances of Complex, or: class Complex(complex): def __new__(class_, x, y=0.0, polar=False): if polar: return complex(x * cos(y), x * sin(y)) else: return complex(class_, x, y) Which will produce instances of complex. --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list