python - 如何从用户输入到字典中跟踪多个类实例化
问题描述
我正在尝试设置一个函数,该函数使用用户输入作为键和值(对象名称)来跟踪类的每个多个实例化。这第一部分似乎有效,但是我希望能够使用“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 属性?谢谢马丁
解决方案
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)**
推荐阅读
- javascript - 我想用 Meteor 中当前网页的 pdf 发送电子邮件
- mocha.js - 在 Mocha 中,为什么我要使用 only()/skip()?
- c++ - 将文字字符串作为 const char * 参数传递会导致代码分析器错误
- c++ - 无法访问我继承的类属性
- sql - SQL:如何按值计算多个表中的条目?
- pact - 有没有办法在 PACT 验证期间修改请求正文?
- actions-on-google - Google Assistant Actions:提供指向整个响应正文的链接
- python - 当 PyScipOpt 达到特定间隙时,如何停止在 PyScipOpt 中运行的代码?
- django - 在线程中创建的 SQLite 对象只能在 Django 2.2.2 和 ipdb 的同一线程中使用
- linux - 通过系统调用函数 read () 或通过 glibc 函数 fread() 读取 /proc/stat 文件的区别