Я пытаюсь понять полиморфизм в ООП, я построил родительский класс монстров, от этого основного класса вы можете наследовать весла, волшебников и гигантов ... но основной метод атаки закодирован в родительском классе монстров, иесть только строка, которая помещается в имя переменной basic_attack
Проблема в том, что когда я вызываю эту переменную атаки в веслах, волшебниках или гигантах в дочерних классах, я получаю эту ошибку Экземпляр 'oarc' не имеет memberpylint 'basic_attack' (нет члена)
, пожалуйста, будьте осторожны и не стесняйтесь просматривать мой код ниже.
class monster:
def __init__(self, damage, speed, skill):
self.damage = damage
self.speed = speed
self.skill = skill
def attack(self):
basic_attack = "you've been attacked by "
return basic_attack
class oarc(monster):
def __init__(self, damage, speed, skill, oarc_data):
super().__init__(damage, speed, skill)
self.oarc_data = oarc_data
def attack(self):
return self.basic_attack + self.oarc_data
class wizard(monster):
def __init__(self, damage, speed, skill, wizard_data):
super().__init__(damage, speed, skill)
self.wizard_data = wizard_data
def attack(self):
return self.basic_attack + self.wizard_data
class giant(monster):
def __init__(self, damage, speed, skill, giant_data):
super().__init__(damage, speed, skill)
self.giant_data = giant_data
def attack(self):
return self.basic_attack + self.giant_data
oarc_object = oarc(56, 150, 'ugly', 'Oarc')
wizard_object = wizard(20, 100, 'fast', 'Wizard')
giant_object = giant(100, 20, 'strong', 'Giant')
list = [oarc_object, wizard_object, giant_object]
for each in list:
print(each.attack)
print(oarc_object.attack())