2012-11-14 47 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

該類文檔字符串不提供任何新信息;請不要打擾添加一個,除非它實際上有一個用途:) –

+0

無論如何,這是錯誤的思考問題;你的客戶已經有了一個名字('naam'屬性),並且** variable **名字應該在你的控制之下。想想看:如果你把它留給用戶來命名你的變量,那麼你怎麼知道要使用什麼名字,所以你可以檢查變量中的內容並使用它?你在用戶給你一個名字之前編寫代碼... –

回答

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