Galera comecei a aprender objetos em python hoje e me deparei com um problema quando estava testando, no programa abaixo quando uso a função personagem.atacar(boss.vida) na primeira vez me devolve o valor correto, mas nas vezes subsequentes o boss.vida não atualiza para o valor menos o dano do ataque, sempre me retorna 1050.
iniciei pelo python console dessa forma:
from personagem import Boss, Personagem
personagem = Personagem('MMysTT', 1000, 150)
boss = Boss('Bersil', 1200, 100)
personagem.atacar(boss.vida)
e o código é esse:
class Personagem:
def __init__(self, nome, vida, dano):
self.nome = nome
self.vida = vida
self.dano = dano
def atacar(self, alvo):
alvo -= self.dano
return alvo
def morrer(self):
if self.vida <= 0:
print(f'O herói {self.nome} morreu!')
class Boss:
def __init__(self, nome, vida, dano):
self.vida = vida
self.dano = dano
self.nome = nome
def atacar(self, alvo):
alvo -= self.dano
return alvo
def morrer(self):
if self.vida <= 0:
print(f'O chefe {self.nome} morreu!')