如何在python中构造一个复数的类?

时间:2015-01-24 19:36:53

标签: python class methods data-structures complex-numbers

首先,我知道scipy中存在复数的数据结构。我只是关注计算物理教科书,这是其中一个问题。 到目前为止,这就是我所拥有的:

class complex:
    def __init__(self,x,y):
        self.re=x
        self.im=y
    def __add__(self, other):
        return complex(self.re+other.re, self.im+other.im)
    def __sub__(self, other):
        return complex(self.re-other.re, self.im-other.im)        
    def __mul__(self, other):
        return complex(self.re*other.re - self.im*other.im, 
        self.re*other.im + self.im*other.re)        
    def __repr__(self):
        return '(%f , %f)' %(self.re, self.im)

但是我应该如何在我创建的类中实现除法,复共轭,模数和相位?

感谢

1 个答案:

答案 0 :(得分:1)

分区你应该用__div____abs__模数来实现。复杂的共轭和阶段你必须选择自己的方法名称。例如,

def conj(self):
    return complex(self.re, - self.im)

(用z.conj()调用)。请注意,您无法为班级定义新的Python语法:例如,您无法使z*正常工作。您还应该使用__rmul__定义右乘,如果您愿意,还应定义__pow__。并且不要忘记一元减号__neg__。但并非所有其他双重强调的运算符方法都适用于复数。那里有a list in the docs