2015-04-12 6 views
-1

Как я могу реализовать __radd__ в классе фракций?Python user define magic method

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