首页 > 解决方案 > 如何从用户输入到字典中跟踪多个类实例化

问题描述

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

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

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")

在 Search 函数中,我希望 lst[x] 被传递给用户输入字符串 x 并找到它所做的关联对象。然后我希望 m 传递在搜索中传递的字符串属性,在这种情况下是年龄,然后打印姓名和年龄。我已经完成了这项工作,但现在它似乎只是通过了 m 而不是年龄?所以使用 Search('martin', 'age') 我希望它会返回;如果 user() 输入 x='martin' 且 y=50,则 martin 50。

我将不胜感激让 m 传递 .age 属性?谢谢马丁

标签: pythonpython-3.xclassoopdictionary

解决方案


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)**

推荐阅读