这是我的代码:
def search_people():
search = input("Who do you want to search for: ")
class people:
def __init__(self, full_name, birthday, telnum, other):
self.name = full_name
self.full_name = full_name
self.birthday = birthday #ddmmyyyy
self.telnum = telnum
self.other = other
Sudar = people("Fullname: Sudaravan Surenthiran", "Birhtday: 10/08/2004",
"Telephone number: 070 006 04 01",
"Other information: Loves chocolate"
所以我想要做的就是这个人输入这个人的名字,例如'sudar'。它应该使用以下信息显示信息:
print(Sudar.name)
print(Sudar.birthday)
print(Sudar.telnum)
print(Sudar.other)
如果我搜索other_person它应该使用:
print(other_person.name)
print(other_person.birthday)
print(other_person.telnum)
print(other_person.other)
我只是想知道在python 3.6上是否有办法做到这一点?
答案 0 :(得分:0)
最简单的选择是将locals()
视为字典 - 所以你可以这样做:
print(locals()[search].name)
然而,在这里使用locals
并不理想,如果您希望将其正确搜索,则可以更清楚地将类实例存储在字典中,如下所示(将...
替换为实际值class params):
peeps = {}
peeps['Sudar'] = people(...)
peeps['Alice'] = people(...)
然后您可以通过执行以下操作来引用人员实例:
peeps[search].name
(这在技术上与使用locals()的方法相同,除了您使用的是命名字典而不是选择变量名称,我认为这些名称更清晰,更安全。