基本上我想将一个字符串转换为一个对象的标识符,如下所示:
count = 0
for i in range(50):
count += 1
functionToMakeIdentifier("foo" + str(count)) = Object(init_variable)
我想制作一系列名称为 foo1、foo2、foo3、foo4、foo5 等的对象……但我不知道如何将这些字符串转换为对象的标识符。帮助!
基本上我想将一个字符串转换为一个对象的标识符,如下所示:
count = 0
for i in range(50):
count += 1
functionToMakeIdentifier("foo" + str(count)) = Object(init_variable)
我想制作一系列名称为 foo1、foo2、foo3、foo4、foo5 等的对象……但我不知道如何将这些字符串转换为对象的标识符。帮助!
改为这样做:
foos = [Object(init_variable) for _ in range(50)]
print(foos[0]) # first item
您现在有一个包含 50 个Object
项目的列表。
也许,如果你真的想使用这些foo1
字符串,你可以这样做
foo_dict = {'foo%d'.format(i) : Object(init_variable) for i in range(1,51)]
print(foo_dict['foo1'])
你没有。如果您想/需要使用比连续整数(例如字符串)更花哨的东西来识别各个项目,您可以使用数组(在 Python 中也称为列表)或字典。
例如:
foos = []
count = 0
for i in range(50):
count += 1
foos.append(Object(init_variable))
之后,您可以将第一个foo
asfoos[0]
和第 50个foo
称为foo[49]
(索引从 0 开始 - 确实看起来很奇怪,但是一旦你习惯了它,只要每个人都同意一件事,它至少一样好 - 而 Python 鼓励 0基于索引,例如range
从 0 开始计数)。
此外,您的代码可以进一步简化。如果您只想生成Object
实例列表,则可以使用列表推导(可能需要一段时间,直到您的课程、书籍或教程涵盖此内容......)。此外,在您的具体示例中,count
andi
是相同的,因此可以合并(当您想计算您迭代的for item in items: ...
内容时,您可以使用for count, item in enumerate(items)
)。
您的用例很荒谬,因为有人会为此使用数组...但是假设您确实需要它,那么诀窍就是使用
globals()[name] = value
你在找字典吗?
你可以这样做:
foos = {}
for i in range(50):
foos['foo%d' % i] = MyObject()
并创建一个带有keys()
like的字典['foo1', 'foo2', ...]
来访问您的对象。
使用执行功能:
>>> for i in range(50):
... count += 1
... exec("foo%d = %d" % (count,count))
...
>>> foo1
1
>>> foo2
2
>>> foo3
3