【问题标题】:How do I get rid of the NameError and TypeError如何摆脱 NameError 和 TypeError
【发布时间】:2015-07-05 08:05:23
【问题描述】:

我不断收到错误

NameError: name animal_type is not defined

TypeError: __init__() missing 2 required positional arguments: 'animal_type' and 'name'

无论我是否将行改为

animal = Animal.Animal(animal_type, animal)

animal = Animal.Animal()

以后会有这个:

#Add animal to list
def addAnimal(animal):
    atype = input("What type of animal would you like to create? ")
    theAnimal = atype
    theAnimal = Animal.Animal()
    theAnimal.set_animal_type(atype)
    aname = input("What is the animal's name? ")
    theName = aname
    theName = Animal.Animal()
    theName.set_name(aname)
    zookeeper.add_animal(theAnimal, theName)

为了提供一些背景知识,这个程序有 2 个可以导入的类。

这是我正在调用的一个:

import random

class Animal:

    #initialize attributes
    def __init__(self,animal_type, name, mood = None):
        self.__animal_type = animal_type
        self.__name = name
        if mood:
            self.__mood = mood
        else:
            self.check_mood()

    # set methods
    def set_animal_type(self, animal_type):
        self.__animal_type = animal_type

    def set_name(self, name):
        self.__name = name

【问题讨论】:

    标签: python class python-3.x typeerror nameerror


    【解决方案1】:

    您得到NameError 是因为在您的第二个文件(您将Animal 类导入到的那个)中,您还没有定义变量。

    animal = Animal.Animal(animal_type, animal)
    

    animal_type 和/或animal 尚未定义。

    至于TypeError,问题与

    animal = Animal.Animal()
    

    是您没有传递任何必需的变量。 animal_typeanimal

    例如:

    import Animal # Animal.py
    
    atype = 'Snake'
    name = 'George'
    a = Animal.Animal(atype, name)
    

    或者干脆

    import Animal # Animal.py
    
    a = Animal.Animal('Snake', 'George')
    

    其他问题(修改后):

    1.)

    set_nameset_animal_type 时不需要创建新的类实例。 (在addAnimal

    应该做的是:

    theAnimal = Animal.Animal(atype, aname)
    

    2.)

    你需要有你的inputs 首先。像这样:

    def addAnimal(animal):
        atype = input("What type of animal would you like to create? ")
        aname = input("What is the animal's name? ")
        theAnimal = Animal.Animal(atype, aname)
        theAnimal.set_animal_type(atype)
        theAnimal.set_name(aname)
        zookeeper.add_animal(theAnimal, aname)
    

    3.)

    您的addAnimal 函数不需要任何变量。它们没有被使用。

    def addAnimal(animal):
    

    应该是

    def addAnimal():
    

    【讨论】:

    • 我已经对代码进行了更正,因此您可以看到我稍后定义了它
    • zookeeper.add_animal 是从哪里来的?
    • 你的帖子。在addAnimal 函数中。 @特雷弗
    • 如果这个答案解决了您的问题,请点击上面的复选标记考虑accepting it。 @特雷弗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2023-03-24
    • 2014-01-28
    • 2013-10-31
    • 2020-10-19
    • 2019-12-01
    • 2013-01-14
    相关资源
    最近更新 更多