以下是有问题的课程:
class Hero(object):
def __init__(self, Name, HP, Damage):
self.Name = Name
self.HP = HP
self.Damage = Damage
这是有问题的功能:
def GenerateHero(HeroName, HeroHP, HeroDamage):
MyHero = Hero(HeroName, HeroHP, HeroDamage)
输入:
GenerateHero("Bob", 100, 10)
它运行。当我尝试“MyHero.Name”或访问任何其他属性时,我得到:
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
MyHero
NameError: name 'MyHero' is not defined
答案 0 :(得分:1)
设置变量MyHero时,它将在GenerateHero函数的范围内创建。这意味着它只能在GenerateHero函数中可见,因此只能在那里引用。在外面引用它会导致您遇到的错误。
为了使用您刚刚生成的英雄,让GenerateHero返回它生成的值,并将其分配给MyHero。
def GenerateHero(HeroName, HeroHP, HeroDamage):
return Hero(HeroName, HeroHP, HeroDamage)
MyHero = GenerateHero("Bob", 100, 10)
print(MyHero.Name)
# Out: Bob
现在,变量MyHero位于您需要的范围内,因此可以随意引用。