python nameerror 名称未定义

标签 python class nameerror

我无法弄清楚为什么会出现此错误。我的代码是这样的

#define the Animal Class

class Animal:
    def __init__ (self, animal_type, age, color):
        self.animal_type = animal_type
        self.age = age
        self.color = color

    def makeNoise():
        pass

    def __str__(self):
        print ("% is % years old and is %" % animal_type,age, color)


#define child classes of Animal 
class Wolves(Animal):
    def __init__(self, animal_type, age, color, wild):

        Animal.__init__(self, animal_type, age, color)
        self.wild = wild
    def __str__(self):
        print ("% is % years old and is % and is %" % (animal_type, age, color, wild))

class Bear(Animal):
    def __init__ (self, animal_type, age, color, sex):
        self.sex = sex
        Animal.__init__(self,animal_type, age, color)

class Moose(Animal):
    def __init__(self, animal_type, age, color, antlers):
        self.antlers = antlers
        Animal.__init__(self, animal_type, age, color)

#add items to each class

wally = Wolves("wolf", 4, "grey","wild")
sally = Wolves("wolf", 3, "white", "tame")

print (str(sally))
print (str(wally))

完整的回溯是

Traceback (most recent call last):
  File "//mgroupnet.com/RedirectedFolders/SBT/Documents/bear51.py", line 41, in <module>
    print (str(sally))
  File "//mgroupnet.com/RedirectedFolders/SBT/Documents/bear51.py", line 24, in __str__
    print ("% is % years old and is % and is %" % (animal_type, age, color, wild))
NameError: name 'animal_type' is not defined

我做错了什么?

最佳答案

哦 - 基本上你只是忘了在你的 __str__ 方法中使用 self.animal_type 。像这样:

def __str__(self):
    print ("%s is %s years old and is %s" % self.animal_type,self.age, self.color)

就像在 __init__ 中一样,要使用实例化类中的变量,您需要使用“self”,如“from this animal instance that I'm working on”。

关于python nameerror 名称未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34271813/

相关文章:

python - 如何将 %s 变成 {0}、{1} ...不那么笨重?

python - 类内的辅助函数 - 各种方法的优缺点

ruby-on-rails - Ruby 类型类不匹配错误

python - NameError:名称 'Frame' 未定义(Python)

python - NameError: 全局名称 '_' 未定义

python - 将类实例方法传递给 Python 中的另一个函数 (2.7)

python - 如何合理利用线程池来完成多个海量计算任务?

python - 如何打印由 Python 数字列表指定的文件行?

c++ - Pthread实例变量运行类中的方法

python - 如何从作为参数传递的类初始化对象