gpt4 book ai didi

python - 如何摆脱 NameError 和 TypeError

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:08 26 4
gpt4 key购买 nike

我一直收到错误

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

最佳答案

您收到 NameError 是因为在您的第二个文件(您正在将 Animal 类导入其中的文件)中,您尚 undefined variable 。

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.)

您需要先输入。像这样:

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():

关于python - 如何摆脱 NameError 和 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com