Python 通过方法更改实例变量
我是一个全新的编程人员,一直在学习Python,我决定尝试通过OOP创建一个基于文本的冒险,到目前为止,我已经成功地克服了自己的问题,但我仍然无法解决这个问题,下面是代码: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 __
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
(实际上它甚至会引发一个类型错误)。