我如何摆脱NameError和TypeE

2024-06-16 10:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我总是犯错误

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)

为了提供一些背景知识,这个程序有两个导入的类。你知道吗

我给你打电话:

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

Tags: tonameselfinitisdeftypeset
1条回答
网友
1楼 · 发布于 2024-06-16 10:16:31

您得到的是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():

相关问题 更多 >