2017-04-25 22 views
0

我想要一個實例,用戶可以使用input()語句訪問該實例。 這裏是我的三個實例python - 將用戶輸入設置爲實例

water1 = waterType("squirtle", 50) 
grass1 = grassType("bulbasaur", 50) 
fire1 = fireType("charmander", 50) 

這裏就是我的意思

class waterType(Pokemon): 
    """creates a water pokemon""" 
    pokemon_type = "water" 
    damage = 10 
    def __init__(self, name, hp): 
    self.name = name 
    self.hp = hp 
    def growl(self): 
    print("Splish Splosh") 
    def attack(self): 
    enemy = input("Who do you want to attack?") <--- over here, I would enter "fire1" 
    """attribute error occurs here""" 
    if (enemy.pokemon_type == "fire"): 
     global damage 
     water1.damage = water1.damage*2 
     enemy.hp = enemy.hp - water1.damage 
     return enemy.hp 
     print ("It was super effective!") 
     print (enemy.hp) 

如果我把所有的「敵人」,並以「FIRE1」取代它,一切都完美的作品。但是,那麼我需要手動輸入每個單一的火型實例。

如果無法將實例分配給輸入,是否有任何方法可以修復我的代碼?

回答

1

現在發生的事情是,您正在將enemy分配給字符串「fire1」,而不是變量。

這可以被實現爲這樣:

enemy = eval(input("Who do you want to attack?"))

這應該然後引用稱爲 'FIRE1' 的實際對象。讓我知道你是否需要進一步的幫助!

+1

謝謝,這正是我想要的! – Coolunized5

+0

沒問題,祝你好運! – Windmill

相關問題