为什么我不能在函数内部创建一个类的实例?

2024-10-03 17:15:13 发布

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

以下是相关课程:

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)

它运行。当我试着我的英雄。名字“或访问任何其他属性,我得到:

Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    MyHero
NameError: name 'MyHero' is not defined

Tags: nameselfobjectinitdefclass课程hp
1条回答
网友
1楼 · 发布于 2024-10-03 17:15:13

设置变量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在您需要的范围内,因此可以随意引用。你知道吗

相关问题 更多 >