Python 通过方法更改实例变量

Python 通过方法更改实例变量,python,Python,我是一个全新的编程人员,一直在学习Python,我决定尝试通过OOP创建一个基于文本的冒险,到目前为止,我已经成功地克服了自己的问题,但我仍然无法解决这个问题,下面是代码: class player: def __init__(self, name, health): self.name = name self.health = health Player_1 = player ('Bob', 80) class enemies: def __

我是一个全新的编程人员,一直在学习Python,我决定尝试通过OOP创建一个基于文本的冒险,到目前为止,我已经成功地克服了自己的问题,但我仍然无法解决这个问题,下面是代码:

class player:
    def __init__(self, name, health):
        self.name = name
        self.health = health

Player_1 = player ('Bob', 80)

class enemies:
    def __init__ (self, description, health, damage):
        self.description = description
        self.health = health
        self.damage = damage

    def __str__ (self):
        return '{} , {} , {}'.format (self.description, self.health, self.damage)

    def enemy_damage (self):
        Player_1.health - random_enemy1
        return Player_1.health

random_enemy1 = enemies ('Goon', 40, 5)
目前,我正在测试这段代码,然后将其完全应用到游戏中,当调用敌方伤害法(random_enemy1.敌方伤害)时,我可以成功地将玩家的生命值降低5,但问题是玩家的生命值没有更新,所以下次运行敌方伤害法时,玩家的生命值会回到80

有人能帮忙吗?我如何让玩家的健康状况在这里更新?我看了很多关于类方法等的视频和其他东西,但我不能完全理解这一点,我知道代码对于我正在尝试做的事情来说可能很糟糕,但我现在只是想让它工作起来,之后我将使用其他方法来减少代码量并改进它


非常感谢

您可以这样定义敌人的伤害:

def enemy_damage(self, enemy):
    enemy.health -= self.damage
    return enemy.health
print("Player_1's health before damage: " + Player_1.health)

Player_1 = player('Bob', 80)
random_enemy1 = enemies('Goon', 40, 5)
random_enemy1.enemy_damage(Player_1)

print("Player_1's health after damage: " + Player_1.health)
然后像这样使用它:

def enemy_damage(self, enemy):
    enemy.health -= self.damage
    return enemy.health
print("Player_1's health before damage: " + Player_1.health)

Player_1 = player('Bob', 80)
random_enemy1 = enemies('Goon', 40, 5)
random_enemy1.enemy_damage(Player_1)

print("Player_1's health after damage: " + Player_1.health)
除此之外,我建议为敌人和玩家使用一个通用类,名为
Player


根据PEP8,类名通常应使用大写字母约定。查看文档。

您必须将实例(
Player\u 1
)作为参数传递给
敌人\u伤害
Player\u 1.health-random\u enemy1
不会更新
Player\u 1.health
(实际上它甚至会引发一个类型错误)。