2014-06-06 3 views
1

Я следую серии уроков Python, и я пришел к занятиям. Итак, я пытаюсь создать какую-то «среднюю систему классов RPG» и пытаюсь взять оружие в класс воина. Im действительно новичок в этом, поэтому было бы благодарно, если вы, ребята, объяснили это как можно проще.Назначение различных переменных для разных классов

Таким образом, я получаю сообщение об ошибке:

AttributeError: 'Warrior' object has no attribute 'wep_name' 

Что я делаю неправильно?

Вот код:

class Character(object): 
    def __init__(self, name): 
     self.health = 100 
     self.name = name 
     self.equipment = { 

     "Weapon": 'None', 
     "Attack Damage": '0' 
     } 

    def printName(self): 
     print "Name: " + self.name 


class Warrior(Character): 
    """ 
    **Warrior Class** 
    50% more HP 
    """ 
    def __init__(self, name): 
     super(Warrior, self).__init__(name) 
     self.health = self.health * 1.5 
     self.equipment["Weapon"] = self.wep_name  # <-- ? 

class Weapon(object): 
    def __init__(self, wep_name): 
     self.wep_name = wep_name 

И извините, если название не имеет никакого смысла. Я не совсем уверен, что это называется :(

ответ

2

В строке, содержащей ошибку, self относится к Warrior, а не Weapon, так что это не имеет никакого wep_name. Если вы хотите, чтобы сделать новый Weapon в этой точке , это может быть что-то вроде:.

self.equipment["Weapon"] = Weapon("Sword") 
1

Как ваши не имеют переменную-член оружия внутри вашего класса воина вы не можете назначить его

вы должны поставить его в метод инициализации, как так

def __init__(self, name, wep_name) 

как у вас в классе оружия.

теперь вы можете сделать

self.equipment["Weapon"] = wep_name 

еще рассмотреть со ссылкой на экземпляр класса оружия, которое уже инкапсулирует weapon_name

надеюсь, что это поможет вам

Смежные вопросы