2014-12-22 1 views
2

나는 기본적으로 내가 할 노력하고있어 무엇을 어떻게 여기 문구 질문을하지만, 정말 잘 모르겠어요어떻게 클래스의 정보를 인쇄 할 수 입력을 사용하는 [PYTHON 3]

treecko.info 

물론 그것은 "스누피"를 표시합니다 내가 할 노력하고있어,하지만 실행될 때 내가 쉘에 입력했다 그러나 경우, 작동하지 않는 것을 매우 분명. 나는 모든 포켓몬의 정보를 나열하는 커다란 데이터베이스를 만들고 싶지만, 논쟁의 목적을 위해 간단하게 유지했다. 내가 알아 내려고하는 모든 것은 입력을 얻고 ".info"의 infront에있는 간단한 방법으로 그 포켓몬 입력 정보를 불러 와서 입력 된 모든 포켓몬이 같은 규칙을 따르고 정보를 표시합니다. , 빨리 나에게 돌아 오기 바랍니다 감사합니다 :)

+2

'print (eval (poke) .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 

원하는 경우 생성자에 이름을 전달하고 각 인스턴스 이름을 저장하는 클래스 특성 dict가 있습니다.

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 
관련 문제