AttributeError: 'Fraction' 对象没有属性 'denom'

如何解决AttributeError: 'Fraction' 对象没有属性 'denom'

下面的代码是分数计算器的一部分,我希望我的代码从我的 init 转到我的 gcd 函数,以便我可以将结果作为分数的 gcd 传递以简化它,我不知道下面的方法是否正确。

class Fraction:


    def __init__(self,num,denom) -> None:  
    
        self.num = self.denom = self.gcd()
        if self.denom < 0:
            self.denom = abs(self.denom)
            self.num = -1*self.num
        elif self.denom == 0:
            raise ZeroDivisionError("cansnot divide by zero")

    def gcd(self):

        while self.denom != 0: 
            self.num,self.denom = self.denom,self.num%self.denom
        return abs(self.num)   

def get_fraction() -> Fraction:

    while True:
        num: str = input("Enter the numerator")
        denom: str = input("Enter the denominator")
        try:
            a = int(num)
            b = int(denom)
            return Fraction(a,b)
        except ValueError:
            print("Enter valid numerator and denominator")

def compute(f1: Fraction,operator: str,f2: Fraction) -> None:

    okay = True
    if operator == '+':
        result = f1.__add__(f2)

    elif operator == '-':
        result = f1.__sub__(f2)

    elif operator == '*':
        result = f1.__mul__(f2)

    elif operator == '/':
        result = f1.__truediv__(f2)

    else:
        print(operator," is an unrecognized operator")
        okay = False

    if okay == True:
        print(f"{f1} {operator} {f2} = {result}")

def main() -> None:

"""Main menu"""

    print("Welcome to the Fraction Calculator! ")
    while True:
        print('Press Q to quit or any other key to start')
        z = input("Start or Quit?")
        if z == 'Q' or z == 'q':
            exit()
        else:
            f1: Fraction = get_fraction()
            operator: str = input("Operation (+,-,*,/,=,<,>,<=,>=,!= ): ")
            f2: Fraction = get_fraction()
            try:
                compute(f1,operator,f2)
            except ZeroDivisionError as e:
                print(e)


if __name__ == '__main__':

    main()

执行此操作时出现以下错误

while self.denom != 0:
AttributeError: 'Fraction' object has no attribute 'denom'

我不确定为什么会抛出此消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?