OOP python наследование

Как мне передать объект "оружия" экземпляру класса Human чтобы с ним работать и вычитать урон от этого оружия?

class Weapon:
    __damage = 0

    def __init__(self, damage):
        self.__damage = damage

    def __str__(self):
        return self.__damage

    def SetDamage(self, damage):
        self.__damage = damage

    def GetDamage(self):
        return self.__damage    
class Human(Person, Weapon):
    
        def attack(self, defender):
            defender.SetHealth(
                defender.GetHealth() - (self.GetDamage() + Weapon.GetDamage(self)) * (1 - defender.GetArmor() / 100))
            return self.GetName() + ' атаковал ' + defender.GetName() + ' и нанес урона ' + \
                   str(round(((self.GetDamage() + Weapon.GetDamage(self)) * (1 - defender.GetArmor() / 100)), 1)) \
                   + '\nУ ' + defender.GetName() + ' осталось hp : ' + str(round(defender.GetHealth(), 1))
    axe = Weapon(300)
    bow = Weapon(240)
    sword = Weapon(250)
    staff = Weapon(250)
    
    jager = Human(2500, 10, 28, 'juger', 25, sword)
    pudge = Ork(3950, 20, 15, 'pidjak', 40, axe)
    leshrak = Magic(2800, 5, 10, 'leshrak', 25, staff)

Ответы (1 шт):

Автор решения: CrazyElf

Опишите соответствующий конструктор в классе Human, также как вы сделали в классе Weapon:

class Human(Person):

    def __init__(self, weapon, <... и всё остальное, что вам нужно>):
        super().__init__()
        self.__weapon = weapon
        ...

    def attack(self, defender):
        ...
        self.__weapon.GetDamage() # weapon с маленькой буквы - это экземпляр класса!

При этом от оружия человека, думаю, наследовать не нужно. :)

→ Ссылка