【发布时间】:2016-10-09 18:04:41
【问题描述】:
我在 python 中创建了一个Rational 类,并为该类创建了__add__、__mull__ 等运算符。这是__init__ 和__add__ 函数的代码:
class Rational(object):
def __init__(self, p, q=None): # p/q
if q is None: q = 1
if q == 0: raise ZeroDivisionError("division by zero!")
self.p = p
self.q = q
self.simplify() # simplify the fraction
def __iadd__(self, other): # +=
self.p = self.p * other.q + self.q * other.p
self.q = self.q * other.q
self.simplify()
return self
def __add__(self, other):
r = Rational(self.p, self.q)
r += other
return r
现在我希望 python 能够理解 1 + Rational(1, 3)(一加三分之一)之类的东西。我怎么能实现这个?我是否必须添加 __radd__ 函数并在 other 为 int 时添加案例?还是有更简单的方法?
【问题讨论】:
标签: python-2.7 operator-overloading