Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当I';我正试图覆盖uu plus uu函数_Python_Overwrite - Fatal编程技术网

Python 当I';我正试图覆盖uu plus uu函数

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

我试图学习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
        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概念来说更有意义