站点图标 AI技术聚合

[python] ‘int‘ object has no attribute ‘output‘ 报错问题

一、问题

初学者在学习python的时候会为这样的报错而手无足措’int’ object has no attribute ‘output’

令人恼火的是,不管怎么调试似乎都无法解决这个问题。于是你可能就看到了我这篇文章。

本篇文章写了这种报错的一个原因——重载运算中没有返回类的变量

原因是报错并非在于报错的字面含义上 :整形对象没有outout的属性(即未定义成员函数output())而是在函数之前的重载运算中忘记返回类的变量。

二、举例

下面以简要的代码举例:

class Money:
    def __init__(self,a=0):
        self.amount=a
    def __add__(self,other):
        sum=self.amount+other.amount
        return sum
    def output(self):
        print("余额为:%f"%self.amount)

m1=Money(100)
m2=Money(500)
m3=m1.__add__(m2)
m3.output()

代码的流程是,规定了Money类,进一步在类里面规定amount数据类型,之后在m1与m2两个变量中运用该类,然后进行__add__重载运算,将结果赋值到变量m3中,最后显示m3变量。

乍一看似乎是没有问题的,但是仍旧如下报错

 但不管我如何修改

m3=m1.__add__(m2)

或者是修改类的成员函数

def output(self):
        print("余额为:%f"%self.amount)

都是不能解决这个报错问题

三、代码更改

原因出在了以下成员函数中

def __add__(self,other):
        sum=self.amount+other.amount
        return sum

上图代码在返回数值的时候忘记了返回Money类的数据类型amount

具体的错误在这一行,如下图所示

        return sum

所以我们应将其改为如下代码

        return Money(sum)

四、结果展示 

成功运行!

文章出处登录后可见!

已经登录?立即刷新
退出移动版