如何动态创建名称来自 Python 列表的实例?
How to dynamically create instances with names coming from a list in Python?
我想创建 class UserDatum 的两个实例 - 一个名为 Chris,另一个名为 Steve。这是一个简单的例子,IRL 我的名单要长得多。这是代码:
class UserDatum:
pass
users = ["Chris", "Steve"]
for user in users:
user = UserDatum()
我要
print Chris
输出类似“<main.UserDatum instance at 0x7fe5780217e8>”的内容。我现在得到的是 "NameError: name 'Chris' is not defined".
我对 Python 还是个新手,所以我希望得到一些帮助 ;)
谢谢!
我建议创建一个 dict
而不是尝试动态创建变量
>>> user_datums = {name : UserDatum() for name in users}
>>> user_datums
{'Chris': <__main__.UserDatum object at 0x02F32A50>,
'Steve': <__main__.UserDatum object at 0x02F32A70>}
>>> user_datums['Chris']
<__main__.UserDatum object at 0x02F32A50>
展示如何使用这个变量
class UserDatum:
def __init__(self, name):
self.name = name
def __str__(self):
return "hi my name is {}".format(self.name)
>>> user_datums = {name : UserDatum(name) for name in users}
>>> print(user_datums['Chris'])
hi my name is Chris
我想创建 class UserDatum 的两个实例 - 一个名为 Chris,另一个名为 Steve。这是一个简单的例子,IRL 我的名单要长得多。这是代码:
class UserDatum:
pass
users = ["Chris", "Steve"]
for user in users:
user = UserDatum()
我要
print Chris
输出类似“<main.UserDatum instance at 0x7fe5780217e8>”的内容。我现在得到的是 "NameError: name 'Chris' is not defined".
我对 Python 还是个新手,所以我希望得到一些帮助 ;) 谢谢!
我建议创建一个 dict
而不是尝试动态创建变量
>>> user_datums = {name : UserDatum() for name in users}
>>> user_datums
{'Chris': <__main__.UserDatum object at 0x02F32A50>,
'Steve': <__main__.UserDatum object at 0x02F32A70>}
>>> user_datums['Chris']
<__main__.UserDatum object at 0x02F32A50>
展示如何使用这个变量
class UserDatum:
def __init__(self, name):
self.name = name
def __str__(self):
return "hi my name is {}".format(self.name)
>>> user_datums = {name : UserDatum(name) for name in users}
>>> print(user_datums['Chris'])
hi my name is Chris