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)
这样的内容来实现这一点,但这不是很优雅,而且容易出错。我知道这不是很优雅,对不起,我完全是个新手,为了工作而被投入其中。你的方式似乎也能让我做我需要做的事情,但我现在问的原因已经在上面了。谢谢你的帮助!