如何从用户输入字典来跟踪多个类实例化

时间:2019-01-14 17:35:57

标签: python python-3.x class oop dictionary

我试图设置一个函数,该函数使用用户输入作为键和值(对象名称)来跟踪类的每个多重实例。第一部分似乎可以使用,但是随后我希望能够使用关键字“名称”和任何其他属性(在这种情况下为“年龄”)进行搜索,如果在字典中返回名称和属性。

我一直在尝试解决的问题是获取用户条目,并将其作为类的名称和表示形式的字符串,并进一步记录针对这些用户名进行的所有实例化的列表。我能看到的唯一方法是从诸如列表或字典之类的容器中实例化。

class text:
    def __init__(self, name, age):
        self.name=name
        self.age=age

    def __repr__(self):
        return self.name

lst={}
def user():    
    x=input("Enter Class name: ")
    lst[x]= x
    y=input("Enter age: ")
    create(x,y)

def create(x,y):
    lst[x]=text(lst[x], y)

def search(x,m):

    for i in lst:
        if i == x:
            return(lst[x].m)
        else:
            print("not found")

在搜索功能中,我希望将用户输入字符串x传递给lst [x]并找到它要执行的关联对象。然后,我希望m传递在搜索中传递的字符串属性,在这种情况下为age,然后输出名称和年龄。我曾经做过这项工作,但现在看来只是过去了,而不是年龄? 因此,我希望使用Search('martin','age')返回; 马丁 50 如果user()输入了x ='martin'和y = 50。

如果能使m传递.age属性,我将不胜感激? 谢谢 马丁

1 个答案:

答案 0 :(得分:0)

class text:
    def __init__(self, name, age):
        self.name=name
        self.age=age

    def __repr__(self):
        return self.name

lst={}

def user():    
    x=input("Enter Class name: ")
    lst[x]= x
    y=input("Enter age: ")
    create(x,y)

def create(x,y):
    lst[x]=text(lst[x], y)

def search(x,name):

    **k = lst.get(x,None)
    if k == None:
        print("not found")
    else:
        return getattr(lst[x], name)**