0

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'

しかし、それは私にエラーを与えます、私はエラーを解決する方法がわかりません、何か考えはありますか?

4

2 に答える 2

1

__add__の代わりにメソッドをオーバーライドする必要があります__plus__。に置き換え__plus__てみてください__add__

于 2012-10-12T02:38:10.583 に答える
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

于 2012-10-12T02:38:56.527 に答える