如何在使用类时在python中添加搜索“功能”?

时间:2018-02-04 10:37:51

标签: python python-3.x

这是我的代码:

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上是否有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

最简单的选择是将locals()视为字典 - 所以你可以这样做:

print(locals()[search].name)

然而,在这里使用locals并不理想,如果您希望将其正确搜索,则可以更清楚地将类实例存储在字典中,如下所示(将...替换为实际值class params):

peeps = {}
peeps['Sudar'] = people(...)
peeps['Alice'] = people(...)

然后您可以通过执行以下操作来引用人员实例:

peeps[search].name

(这在技术上与使用locals()的方法相同,除了您使用的是命名字典而不是选择变量名称,我认为这些名称更清晰,更安全。