a382418718 发表于 2020-6-18 19:08:47

求助!!各位大佬,请问下面代码的错误是如何出现的,如何解决

>>> class Res():
        def __init__(self,num = 0):
                self.num = num
        def incr(self):
                self.abc += self.num
        def set(self,number):
                self.number = number
                print('最多%d就餐'%self.number)
        def increment(self,a):
                self.number1 = a
                self.number += self.number1
                print('增加%d人就餐'%self.number1 + ',最多%d人就餐'%self.number)

               
>>> a = Res(4)
>>> a.incr()
Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
    a.incr()
File "<pyshell#74>", line 5, in incr
    self.abc += self.num
AttributeError: 'Res' object has no attribute 'abc'

a382418718 发表于 2020-6-18 19:31:14

求助

1223253411 发表于 2020-6-18 19:39:08

本帖最后由 1223253411 于 2020-6-18 19:54 编辑

错误的点在
def incr(self):
    self.abc += self.num
这里,为什么呢,self.abc都没有定义啊,没有这个变量怎么累加?
就像
b = 1
a += b
# a是啥??

你可以先在初始化函数下定义一个self.abc,这样在内存中才能找到这个变量的存在


ps:错误的第一时刻,你应该看它的报错行,报错信息

Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
    a.incr()
File "<pyshell#74>", line 5, in incr
    self.abc += self.num
AttributeError: 'Res' object has no attribute 'abc'

看 , 它已经很明确的告诉你Res对象没有属性abc了,这个报错真的很重要的,解决问题都是从这个点出发,如果你不看的话,会损失很多东西的

英文不是障碍,因为有百度翻译、谷歌翻译、有道翻译、阿巴阿巴阿巴等等,我还真不信每个程序员英语都牛啤{:10_327:} ,反正我英语不行,没有翻译我都看不懂



页: [1]
查看完整版本: 求助!!各位大佬,请问下面代码的错误是如何出现的,如何解决