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

2024-04-25 20:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

class UserDatum:
    pass

users = ["Chris", "Steve"]

for user in users:
    user = UserDatum()

我想要

print Chris

输出类似于“<main.UserDatum实例位于0x7fe5780217e8>;”。我现在得到的是“NameError:name'Chris'未定义”

我对Python还是个新手,所以我希望能有一些牵手;) 谢谢


Tags: 实例代码in列表forpass名字users
1条回答
网友
1楼 · 发布于 2024-04-25 20:05:01

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

相关问题 更多 >