如何摆脱 NameError 和 TypeError
How do I get rid of the NameError and TypeError
我一直收到
的错误
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
class 的文件)中,你没有定义你的变量。
animal = Animal.Animal(animal_type, animal)
animal_type
and/or animal
尚未定义。
至于TypeError
,问题是
animal = Animal.Animal()
您没有传递任何必需的变量。 animal_type
和 animal
.
例如:
import Animal # Animal.py
atype = 'Snake'
name = 'George'
a = Animal.Animal(atype, name)
或者干脆
import Animal # Animal.py
a = Animal.Animal('Snake', 'George')
其他问题(修改后):
1.)
当您 set_name
或 set_animal_type
时,您不需要创建新的 class 实例。 (在 addAnimal
)
你应该做的是:
theAnimal = Animal.Animal(atype, aname)
2.)
您需要先 input
。像这样:
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():
我一直收到
的错误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
class 的文件)中,你没有定义你的变量。
animal = Animal.Animal(animal_type, animal)
animal_type
and/or animal
尚未定义。
至于TypeError
,问题是
animal = Animal.Animal()
您没有传递任何必需的变量。 animal_type
和 animal
.
例如:
import Animal # Animal.py
atype = 'Snake'
name = 'George'
a = Animal.Animal(atype, name)
或者干脆
import Animal # Animal.py
a = Animal.Animal('Snake', 'George')
其他问题(修改后):
1.)
当您 set_name
或 set_animal_type
时,您不需要创建新的 class 实例。 (在 addAnimal
)
你应该做的是:
theAnimal = Animal.Animal(atype, aname)
2.)
您需要先 input
。像这样:
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():