2012-11-14 2 views
2

먼저 Python 초보자 (또는 프로그래밍 초보자)와 나는 객체 기반의 속성을 인쇄하는 방법을 알아 내려고합니다. 사용자 입력.Python 3x에서 사용자 입력을 기반으로 객체 속성 인쇄

class Customer: 
    "De klasse customer" 

    def __init__(self, naam, adres, woonplaats, email): 
     self.naam = naam 
     self.adres = adres 
     self.woonplaats = woonplaats 
     self.email = email 

input1 = input ("Enter the object name") 
print(input1.naam) ## ** << This is what i like to know** 

a = Customer('Name1', 'address', 'Utrecht', '[email protected]') 
b = Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com') 

그래서 나는 기본적으로이 원하는 : print(a.naam)가 작동하지만, '이'는 사용자가 입력해야합니다

내가 지금까지 가지고있는 코드입니다.

일부 검색했지만 지금까지 성공하지 못했습니다.

+0

이 클래스 docstring은 새로운 정보를 제공하지 않습니다. 제발 실제로 사용하지 않는 한 그것을 추가하기 위해 귀찮게하지 마세요 :) –

+0

어쨌든, 그 문제에 대해 잘못 생각하고있다; 고객이 이미 이름 ('naam' 속성)을 가지고 있으며 ** 변수 ** 이름이 귀하의 통제하에 있어야합니다. 변수에 이름을 붙이기 위해 사용자에게 맡기면 사용할 이름을 어떻게 알기를 기대할 수 있습니까? 변수에 무엇이 있는지 확인하고 사용할 수 있습니까? 사용자가 이름을 부여하기 전에 코드를 작성하고 있습니다. –

답변

1

당신은 locals 기능을 사용할 수 있습니다

>>> a = {1:'abc'} 
>>> obj = raw_input('Obj?> ') 
Obj?> a 
>>> print locals()[obj][1] 
abc 
>>> 

이 그러나 매우 안전하지 않은 구조입니다 (현지인 다른 것이있다!)


클리너 방법은하는 것입니다 :

customers = { 
    'a' : Customer('Name1', 'address', 'Utrecht', '[email protected]') 
    'b' : Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com') 
} 

customer = raw_input('Customer? > ') 
print customers[customer].naam 

그래도 KeyError을 제대로 처리하십시오!

관련 문제