我是一名C ++和C#程序员,因为上学,我正在转向Python。我在使用面向对象原则制作的游戏中遇到了错误。下面是代码:
class Entity(object):
def __init__(self, name, hp):
self.name = name
self.hp = hp
def attack(self, attack_name):
pass
def set_name(self, name):
self.name = name
class Enemy(Entity):
def __init__(self, name, hp):
super(Enemy, self).__init__(name, hp)
self.attacks = {} # creates a DICTINARY of attacks
def add_attack(self, attack_name, attack_damage):
self.attacks[attack_name] = attack_damage
def attack(self, attack_name):
if self.attacks[attack_name] == None:
print("Attack not availible.")
print(self.name + " is attacking with attack " + attack_name + " with " + self.attacks[attack_name])
return self.attacks[attack_name]
new_enemy = Enemy("Waddle Doo", 140)
new_enemy.add_attack("Shoot Beam", 55)
new_enemy.attack("Shoot Beam")
我创建了一个继承自 Entity 类的类,名为 Enemy 。然后我尝试启动一个敌人对象,但它给了我错误: NameError:名称'Enemy'未定义。为什么会这样?是否必须对构造函数在Python中的工作方式做些什么?如果你可以帮助解决这个看似很小的问题,我非常感谢你。
答案 0 :(得分:2)
这是你的缩进。
new_enemy = Enemy("Waddle Doo", 140)
new_enemy.add_attack("Shoot Beam", 55)
new_enemy.attack("Shoot Beam")
你在Enemy类的范围内声明了上述内容。将它们移回到Enemy(Entity)类的级别:line