根据Python 3x中的用户输入打印对象属性

时间:2012-11-14 23:14:43

标签: python

首先,我想说我是一个Python初学者(或编程初学者),我正在试图找出如何根据用户输入打印对象的属性。

这是我到目前为止的代码:

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', 'Email1@hotmail.com')
b = Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com')

所以我基本上想要这个:print(a.naam)可以工作,但是'a'必须由用户输入。

到目前为止做了一些搜索但没有成功。

1 个答案:

答案 0 :(得分:1)

您可以使用locals功能:

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

然而,这是一个高度不安全的构造(当地人还有其他东西!)


更清洁的方法是:

customers = {
    'a' : Customer('Name1', 'address', 'Utrecht', 'Email1@hotmail.com')
    'b' : Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com')
}

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

您需要正确处理KeyError