如何动态创建名称来自Python列表的实例?

时间:2015-02-27 13:05:14

标签: python class oop

我想创建一个UserDatum类的两个实例 - 一个名为Chris,另一个名为Steve。这是一个简单的例子,IRL我的名字列表要长得多。这是代码:

class UserDatum:
    pass

users = ["Chris", "Steve"]

for user in users:
    user = UserDatum()

我想要

print Chris

输出类似"< main .UserDatum实例的内容,地址为0x7fe5780217e8>"。我现在得到的是#34; NameError:name' Chris'未定义"。

我还是Python的新手,所以我很感激一些手持;) 谢谢!

1 个答案:

答案 0 :(得分:2)

我建议制作一个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