Есть 2 класса с однотипными атрибутами, допустим:
class Weapon(): def __init__(self, health = 0, attack = 0, defense = 0, vampirism = 0, heal_power = 0): self.health = health self.attack = attack self.defense = defense self.vampirism = vampirism self.heal_power = heal_power class Sword(Weapon): def __init__(self): super().__init__(health = 5, attack = 2) class Warrior: maxhealth = 50 name = 'warrior' def __init__(self, health = 50, attack = 5, defense = 0): self.health = health self.attack = attack self.defense = defense self.equipped_list = []
Хочу написать функцию в классе Warrior, которая будет менять атрибуты, если объект класса Warrior “одел” объект класса Weapon.
def equip_weapon(self, weapon): if not isinstance(weapon, Weapon()): weapon = Weapon() self.equipped_list.append(weapon) #пока пишем вручную self.health += weapon.health self.attack += weapon.attack self.............
Спасибо.
P.S. Для понимания привожу то, что выдумал сам для решения, но ЭТО не работает
def equip_weapon(self, weapon): if not isinstance(weapon, Weapon): weapon = Weapon() list2 = [a for a in dir(weapon) if not a.startswith('__')] for a in list2: if self.a and self.a != 0: self.a += weapon.a self.equipped_list.append(weapon)
Ошибка вот такая:
Traceback (most recent call last): File "<pyshell#145>", line 1, in <module> a.equip_weapon(b) File "C:/Users/Леха/Desktop/Battle/another solution test.py", line 32, in equip_weapon if self.a and self.a != 0: AttributeError: 'Warrior' object has no attribute 'a'