我可以将变量分配给分配给类实例的变量吗?-Python问题

我可以将变量分配给分配给类实例的变量吗?-Python问题,python,python-3.x,Python,Python 3.x,我正在创建一个基于文本的游戏,我一直有这个问题,我不知道如何解决 class Enemy: def __init__(self, hp, maxHp, attack, defense): self.maxHp = 100 self.hp = self.maxHp self.attack = 5 self.defense = 1 # --- Now we just create the two different enemie

我正在创建一个基于文本的游戏,我一直有这个问题,我不知道如何解决

class Enemy:
    def __init__(self, hp, maxHp, attack, defense):
        self.maxHp = 100
        self.hp = self.maxHp
        self.attack = 5
        self.defense = 1
# --- Now we just create the two different enemies from this class --- #
tutoEnemy1 = Enemy(100, 100, 5, 1)
tutoEnemy2 = Enemy(100, 100, 5, 1)
下面是与此问题相关的代码。我给类实例分配了两个变量以获得两个独立的敌人。一个叫tutoEnemy1,另一个叫tutoEnemy2

在游戏代码中,包含战斗功能的部分当然有一个涉及攻击敌人的部分。我最初认为,通过创建两个单独的“如果”语句,选择你想要攻击的敌人的那一刻一切都会顺利进行,但后来我意识到,在出现两个以上敌人的那一刻,我有很多垃圾,重复的代码,涉及计算伤害的过程和所有这些东西

我的想法是定义一个函数,每次都能实现损伤计算过程,这样我就不必重复任何代码

def damage():
    option = input("> ")
    if option == 1:
        selectedEnemy = tutoEnemy1()
    elif option == 2:
        selectedEnemy = tutoEnemy2()
    else:
        input("Incorrect input, type a correct one.")
        damage()
    rawDamage = Player.attack * multiplierDamage
    finalDamage = rawDamage - selectedEnemy.defense
    selectedEnemy -= finalDamage
问题是,最初我将敌方类实例分配给了“tutoEnemy1&2”变量,一切正常。但现在,它给了我一个问题,“selectednemy”变量似乎没有按照我的预期工作(获取一个敌人或另一个敌人的信息)。它只给了我这个错误:

Traceback (most recent call last):
  File "c:\Users\acmem\Desktop\Text-Based Game\RPG.py", line 75, in <module>
    selectedEnemy = tutoEnemy1()
TypeError: 'Enemy' object is not callable
回溯(最近一次呼叫最后一次):
文件“c:\Users\acmem\Desktop\Text-Based Game\RPG.py”,第75行,在
selectedEnemy=tutoEnemy1()
TypeError:“敌人”对象不可调用

有没有办法做到这一点?如果是,正确的sintax是什么?(我使用Python 3.0)

要将tutoEnemy1或tutoEnemy2的引用指定给“SelectedEmy”,您应该去掉括号,因为它们是调用函数的标准语法。 由于Tutoenem1和tutoEnemy2不可调用(=非函数),因此会引发此错误

因此,代码应该如下所示:


def损坏():
选项=输入(“>”)
如果选项==1:
selectedEnemy=tutoEnemy1
elif选项==2:
selectedEnemy=tutoEnemy2
不过,您可能会对上一句话产生问题,因为您试图从SelectedEndemy实例而不是从其HP中减去损害,所以您可能需要以下内容:

selectedEnemy.hp-=最终损坏

结尾不需要括号。只需使用
selectedEnemy=tutoEnemy1