2014-02-18 4 views
0

Я новичок в «python» и тестировал классы и объекты.
Чтобы понять классы, я опробовал небольшой код.
Этот код в основном создает Hero с health (я дал 100). Есть три атаки с повреждением. Код запрашивает ввод «Как вы будете атаковать?» от игрока. для атак, указанных в словаре att, программа должна вернуть новый health игрока, который является первоначальным здоровьем, вычитаемым из-за атаки.классы и наследование в python

Моя проблема в том, что я не могу понять, как вернуть новый health игрока после ввода ввода от пользователя. Ошибка, которую я получаю, выглядит следующим образом:

AttributeError: 'Input' object has no attribute 'health'. 

, пожалуйста, кто-нибудь может помочь мне с синтаксисом.

class Hero(object): 
    def __init__(self,name): 
     self.name=name 
    def stats(self,health): 
     self.health=health 
    def attack(self,kick,punch,kamehameha): 
     self.punch=punch 
     self.kick=kick 
     self.kamehameha=kamehameha 

att={"kick":20,"punch":10,"kamehameha":50} 

#taking input from the player 
class Input(Hero): 
    def __init__(self,a): 
     a=raw_input("how will you attack?:") 
     self.a=a 
    def new(self): 
     for a in att[key]: 
      return self.health - att[key] 

#create a player 
player1=Hero("goku") 
player1.stats(100) 

print player1.name 
print player1.health 

x=Input(att) 
print x.new() 

ответ

0

new() является методом класса героя, так что вы должны вызвать его на объекте player1. Кроме того, вы должны изменить свой метод new (и, вероятно, изменить имя на что-то не так близко к обычно ключевым словам reserverd), чтобы принять тип атаки.

пример:

print player1.new(x) 

и ваш метод new должен принять тип атаки строку:

def new(self, attack_type): 
    return self.health -= att[attack_type] #I assume you want to modify the health value and not only return the subtracted value 

Такие основные изменения должны просто сделать ваш код работает, но это далеко от совершенства - вы должны подтвердите ввод пользователя или, по крайней мере, проверьте, является ли тип атаки ключом словаря att.

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