Как передать в качестве аргумента любой объект класса
Есть такой код,чтобы функции PlayerAtk() и OpAtk() работали, я добавил в аргументы init() обоих классов поле(если честно не уверен как это называется) target, которое принимает объект класса, но вот в чём суть, чтобы создать объект одного из этих классов, нужно создать объект другого класса перед этим. Естественно - ничего таким образом не работает, вот мой вопрос: Можно ли каким-то образом, аргументу target при создании объекта присвоить любой объект другого класса, который будет создан в будущем и будет ли это работать?
class Player:
def __init__(self,p_hp, p_weap, target):
self.p_health = p_hp
self.p_weapon = p_weap
self.target = target
def PlayerAtk(self):
self.target.op_health -= self.p_weapon.weapon_damage
print(self.target.op_health)
class Opp:
def __init__(self,op_name, op_hp, op_dmg, target):
self.op_name = op_name
self.op_health = op_hp
self.op_damage = op_dmg
def OpAtk(self):
self.target.p_hp -= self.op_dmg
print(self.target.p_hp)
class Weapon:
def __init__(self,w_name, w_dmg):
self.weapon_name = w_name
self.weapon_damage = w_dmg
pistol = Weapon("Pistol", 10)
monster = Opp("Monster",10, 15, human)
human = Player(10, pistol, monster)
Ответы (1 шт):
Вы всегда можете имплементировать класс так, чтобы можно было задать target потом.
Например:
class Opp:
def __init__(self,op_name, op_hp, op_dmg):
...
def set_target(self, target):
self.target = target
...
monster = Opp("Monster",10, 15)
human = Player(10, pistol, monster)
monster.set_target(human)
Класс Player можно сделать наподобие (задание через отдельный метод), чтобы однотипно было.