2015-04-12 63 views
-1

如何在分数类中实现__radd__Python用户定义神奇方法

class Fraction: 
    def __init__(self,num,den): 
     self.num = num 
     self.den = den 
    def __add__(self,other): 
     num = self.num * other.den + other.num * self.den 
     den = self.den * other.den 
     common = self.gcf(num,den) 
     return Fraction(num/common , den/common) 

    def __iadd__(self,other): 
     self.num = self.num * other.den + other.num * self.den 
     self.den = self.den * other.den 
     common = self.gcf(self.num,self.den) 
     self.num = self.num/common 
     self.den = self.den/common 
     return self 

    def __radd__(self,other): 
     pass 
+0

与实现'__add__'相同的确切方式,但参数切换。如果这不能令人满意,你的'__add__'也会混乱。 – user2357112

回答

1

从您的实现假设你一直在增加只是分数,没有必要实施__radd__,因为你已经有了__add__

object.__radd__

如果左操作数不支持相应的操作这些功能仅称为和操作数是不同的类型。

但是万一你想要它,你可以交换参数,因为加法是可交换的。

def __radd__(self, other): 
    return other + self