Python 当I';我正试图覆盖uu plus uu函数
我试图学习Python中的OOP,并编写以下代码来覆盖Python 当I';我正试图覆盖uu plus uu函数,python,overwrite,Python,Overwrite,我试图学习Python中的OOP,并编写以下代码来覆盖\uuuu plus\uu方法 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
\uuuu plus\uu
方法
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)
打印f+f#我希望结果为2/12
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'Fraction'
文件“”,第1行,在
TypeError:不支持+:“分数”的操作数类型
但是它给了我一个错误,我不知道如何解决这个错误,你知道吗?你需要重写
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu添加
方法,而不是。只需尝试将\uuuuu plus\uuuuuuu
替换为\uuuu add\uuuuuuu
工作代码:
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.denomator+f.denomator
您可能想要\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
接口?两点:(1)\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。(2) a/b+c/d
通常不等于(a+b)/(c+d)
,因此您的算法不太有效。从分数导入分数
@DSM您是对的,特别是关于第二点,它返回分数实例对于OOP概念来说更有意义