python中运算符“重载”

来源:互联网 发布:自动换ip软件 编辑:程序博客网 时间:2024/06/05 14:49
class Rational(object):    def __init__(self, p, q):        self.p = p        self.q = q    def __add__(self, r):        return Rational(self.p * r.q + self.q * r.p, self.q * r.q)    def __sub__(self, r):        return Rational(self.p * r.q - self.q * r.p, self.q * r.q)    def __mul__(self, r):        return Rational(self.p * r.p, self.q * r.q)    def __truediv__(self, r):        return Rational(self.p * r.q, self.q * r.p)    def __str__(self):        return '%s/%s' % (self.p, self.q)    __repr__ = __str__r1 = Rational(1, 3)print(r1)r2 = Rational(7, 6)r3 = r1 + r2print(r2)print(r3)print(r1 - r2)r3 = r1 / r2print(r3)


这里有点像C++的运算符重载。


要注意:

https://stackoverflow.com/questions/40770632/typeerror-unsupported-operand-types-for

Python3 uses special division names: __truediv__ and __floordiv__ for the / and //operators, respectively.

原创粉丝点击