2014-12-22 30 views
2

我真的不知道如何短語的問題,但在這裏就是我基本上是試圖做的事:如何使用輸入打印類的信息[PYTHON 3]

class pokemon: 
    def __init__(self, info): 
     self.info=info 

treecko=pokemon("fido") 

poke=input() 
print(poke.info) 

它很清楚我想要做的,但在執行時它不工作,但是如果我要輸入到外殼:

treecko.info 

當然它會顯示「汪汪」。我想創建一個大型的數據庫,列出所有口袋妖怪的信息,但保持它儘可能簡單,因爲我可以用於論證目的。我試圖找出的所有東西都是一種簡單的方法來獲取輸入,並將其粘貼在「.info」的前面,以顯示該口袋妖怪輸入的信息,以便輸入的任何口袋妖怪都遵循相同的規則並且顯示信息。請回到我儘快,謝謝:)

+2

這將是'打印(EVAL(捅)的.info)',但有更好的方法 –

回答

1

你可以使用print(eval(poke).info),但我不會推薦它,使用字典,而不是存儲爲鍵實例名字符串和實例存儲的值:

class pokemon: 
    def __init__(self, info): 
     self.info=info 

treecko=pokemon("fido") 

poke = input() 
d = {"treecko":treecko}  
print(d[poke].info) 
fido 

如果你想,你可以一個名字傳遞給構造函數,並具有存儲每個實例名稱的類屬性字典:

class pokemon: 
    instances_d = {} 
    def __init__(self, info, name): 
     self.name = name 
     self.info = info 
     pokemon.instances_d[name] = self 

treecko = pokemon("fido","treecko") 


treecko = pokemon("fido","treecko") 
treecko1 = pokemon("dido","treecko1") 

poke = input() 
print(pokemon.instances_d[poke].info) 
poke = input() 
print(pokemon.instances_d[poke].info) 
treecko 
fido 
treecko1 
dido 
相關問題