Python 另一个类中的一个类中的NameError
在这个程序中,我试图创建一个名为Human的类,其中的类表示人的不同属性:Python 另一个类中的一个类中的NameError,python,class,nameerror,Python,Class,Nameerror,在这个程序中,我试图创建一个名为Human的类,其中的类表示人的不同属性: class Human: class Health: def __init__(self): self.thirst = 24 self.hunger = 36 self.howSleepy = 48 class Ginetics:
class Human:
class Health:
def __init__(self):
self.thirst = 24
self.hunger = 36
self.howSleepy = 48
class Ginetics:
def __init__(self, spawnCoordinates, parentM, parentF, isMale):
self.spawnCoordinates = coordinates
self.parentM = parentM
self.parentF = parentF
self.isMale = isMale
self.kids = [[]]
class General:
def __init__(self, birthday):
self.birthday = birthday
def __init__(self, spawnCoordinates, parentM, parentF, isMale, birthday):
self.Health = Health()
self.Genetics = Genetics(spawnCoordinates, parentM, parentF, isMale)
self.General = General(birthday)
但是当我运行这个
hum1 = Human((500,500), "Dan", "Lisa", True, 120)
它给了我这个错误:
NameError: name 'Health' is not defined
健康
等不是全局变量;它们是类属性。您必须编写self.Health=Human.Health()
但是,Python中通常不使用嵌套类。其目的可能是仅将健康
用于人类
的实例,但其定义与人类
没有内在联系。只需在全球范围内宣布:
class Health:
def __init__(self):
self.thirst = 24
self.hunger = 36
self.howSleepy = 48
...
class Human:
def __init__(self, ...):
self.health = Health()
...
分离类而不是嵌套类,这样做没有好处,而且会降低代码的可读性
class Human:
def __init__(self, spawnCoordinates, parentM, parentF, isMale, birthday):
self.Health = Health()
self.Genetics = Genetics(spawnCoordinates, parentM, parentF, isMale)
self.General = General(birthday)
class Health:
def __init__(self):
self.thirst = 24
self.hunger = 36
self.howSleepy = 48
class Genetics:
def __init__(self, spawnCoordinates, parentM, parentF, isMale):
self.spawnCoordinates = spawnCoordinates
self.parentM = parentM
self.parentF = parentF
self.isMale = isMale
self.kids = [[]]
class General:
def __init__(self, birthday):
self.birthday = birthday
hum = Human((500, 500), "Dan", "Lisa", True, 120)
print(hum.General.birthday)
输出:
120
尝试
Human.Health()
而不是Health()
您需要先访问外部类才能访问内部类,请查看本教程,它解释了所有内容: