当我试图覆盖__plus__函数时,获得了不受支持的操作数错误

时间:2012-10-12 02:30:42

标签: python overwrite

我正在尝试在Python中学习OOP,并使用以下代码覆盖__plus__方法

class Fraction(object):
    '''Define a fraction type'''
    def __init__(self, num=0, denom=1):
        '''Create a new Fraction with numerator num and denominator demon'''
        self.numerator = num
        if denom != 0:
            self.denominator = denom
        else:
            raise ZeroDivisionError


    def __plus__(self, f):
        num = self.numerator + f.numerator      
        denom = self.numerator + f.denominator
        return "{0}/{1}".format(num, denom)

f = Fraction(1, 6)

print f + f#我想结果是2/12

  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'Fraction'

但它给了我一个错误,我不知道如何解决错误,任何想法?

2 个答案:

答案 0 :(得分:1)

您需要覆盖__add__方法而不是__plus__。只需尝试将__plus__替换为__add__

答案 1 :(得分:1)

工作代码:

class Fraction(object):
    '''Define a fraction type'''
    def __init__(self, num=0, denom=1):
        '''Create a new Fraction with numerator num and denominator demon'''
        self.numerator = num
        if denom != 0:
            self.denominator = denom
        else:
            raise ZeroDivisionError

    def __add__(self, f):
        num = self.numerator + f.numerator      
        denom = self.denominator + f.denominator
        return "{0}/{1}".format(num, denom)

请注意,我还修复了denom = self.denominator + f.denominator