如何解决如何使对象的列表元素实例
我正在尝试遍历字符串列表,并使每个元素成为对象的实例。 我做了一个简化的版本只是为了演示我的问题。当我运行此代码时,出现一条错误消息,提示未定义“ David”。我知道我做错了什么:当我写“ People [i] = Person()”时,People [i]成为变量名,而不是调用列表中的每个元素。
如何调用列表中的每个元素并将其设为变量,以便在这种情况下,当我打印(David.name)时,它将打印“ David”?
class Person:
def __init__(self):
self.name = "Unassigned"
People = ["David","Emma","Brian"]
for i in range(len(People)):
People[i] = Person()
print(David.name)
解决方法
以下是您可以尝试的上述代码段的调整
class Person:
# init constructor
def __init__(self,name):
self.name = name
People = ["David","Emma","Brian"]
# instead of creating dynamic variable use a dict
peoples = {}
for p in People:
# init object with person name
peoples[p] = Person(p)
# access based on person name
print(peoples['David'].name)
,
要动态创建变量,这不是一个好主意。您可以做到的方式如下:
people = ["David","Brian"]
code = "class {name}:\n pass\n{name}.name = '{name}'"
for name in people:
exec(code.format(name = name),globals())
print(David.name)
#prints:
#'David'
,
请勿分配这样的变量名或与全局变量混淆。改用字典:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div>
<h1>
base base base
</h1>
<div id="test">
<h3>
aaaaaaaaaaaaaaa
</h3>
<button>test</button>
</div>
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。