Python 将字符串列表转换为对象

Python 将字符串列表转换为对象,python,list,dynamic-variables,Python,List,Dynamic Variables,我有一个字符串列表,比如: listofstuff = ['string1', 'string2', 'string3', ...] for object in listofstuff: object = classthing(inputs) dct = {name: classthing(inputs) for name in listofstuff} 我已经创建了一个自定义类对象来完成我想做的事情。我现在只想创建一组上述对象,这些对象被命名为我列表中的字符串。我该怎么做 所以

我有一个字符串列表,比如:

listofstuff = ['string1', 'string2', 'string3', ...]
for object in listofstuff:
     object = classthing(inputs)
dct = {name: classthing(inputs) for name in listofstuff}
我已经创建了一个自定义类对象来完成我想做的事情。我现在只想创建一组上述对象,这些对象被命名为我列表中的字符串。我该怎么做

所以我有点像:

listofstuff = ['string1', 'string2', 'string3', ...]
for object in listofstuff:
     object = classthing(inputs)
dct = {name: classthing(inputs) for name in listofstuff}
但它不起作用。我该怎么做

编辑:也许我应该澄清一下。我有一个可以更改的输入文件,输入文件中有一个名称列表。我想创建一组类对象,它们都被称为列表中的名称

所以有人给了我一张这样的清单 stuff=['car1','car2','car3'] 现在我想创建一组新的Car对象,每一个都称为car1、car2等等,这样以后我就可以做car1.calculate_price()之类的事情了


编辑2:很抱歉所有的编辑,但我也想分享一些东西。在我试图做的事情中,对象以特定的方式分组在一起,但这些方式对用户来说并不明显。所以这就像“car1_car23_car4”。所以我想,如果我问用户,你想选哪辆车?他们选择了car4,它将创建一个名为car1_car23_car4的对象,而不是car4。

假设您的字符串位于名为
listofstring
的列表中,这将创建一个对应的列表,从字符串构造对象(也假设类的
\u init\uuu
方法需要一个字符串参数):

如果这就是你想要的,请进一步阅读


虽然这回答了您的问题,但可能是更好的方法。

动态创建名称不是正确的方法。很容易失去对它们的跟踪,使其比您需要的多或少,或者意外地覆盖现有名称

更好的方法是制作一个字典,其中键是
listofstring
中的字符串,值是类的实例。您可以使用a并编写如下内容:

listofstuff = ['string1', 'string2', 'string3', ...]
for object in listofstuff:
     object = classthing(inputs)
dct = {name: classthing(inputs) for name in listofstuff}
下面是这一功能的演示1:

>>> class classthing: # This represents your class
...     def __init__(self, name):
...         self.name = name
...
>>> listofstuff = ['Joe', 'Bob', 'Mary']
>>>
>>> dct = {name: classthing(name) for name in listofstuff}
>>> dct  # dct now holds all the data you need
{'Mary': <__main__.classthing object at 0x0205A6D0>, 'Joe': <__main__.classthing object at 0x0205A690>, 'Bob': <__main__.classthing object at 0x0205A6B0>}
>>>
>>> # Each value in dct is an individual instance of your class
>>> dct['Joe'].name
'Joe'
>>> dct['Bob'].name
'Bob'
>>> dct['Mary'].name
'Mary'
>>>
>>class classthing:#这代表您的类
...     定义初始化(self,name):
...         self.name=名称
...
>>>ListofStuf=['Joe','Bob','Mary']
>>>
>>>dct={name:listofsuff中name的类事物(name)}
>>>dct#dct现在保存您需要的所有数据
{'Mary':,'Joe':,'Bob':}
>>>
>>>#dct中的每个值都是类的一个单独实例
>>>dct['Joe'].名称
“乔”
>>>dct['Bob'].名称
“鲍勃”
>>>dct['Mary'].名称
“玛丽”
>>>


1为了演示,我将
输入
替换为
名称
。不过,您不必在实际代码中执行此操作。

您需要什么?想重新定义列表中的每个元素吗?你能为对象发布
\uuuu init\uuuu
方法吗?我认为这可能是正确的方法,但我不会动态创建名称列表,也不会以某种方式忘记。我有一个带有名称列表的输入文件,我想将该列表中的名称转换为称为所述名称的对象。有没有办法做到这一点?那就是动态创建名称。您可以通过更新像
globals()[object]=classthing(inputs)
这样的内容来实现这一点,但这不是很优雅,而且容易出错。我知道这不是很优雅,对不起,我完全是个新手,为了工作而被投入其中。你的方式似乎也能让我做我需要做的事情,但我现在问的原因已经在上面了。谢谢你的帮助!