我正在尝试在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'
但它给了我一个错误,我不知道如何解决错误,任何想法?
答案 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