Python 3.x 如何使用变量;持有;一个字符串值作为列表名?

Python 3.x 如何使用变量;持有;一个字符串值作为列表名?,python-3.x,string,list,variables,Python 3.x,String,List,Variables,我要传递给类init的参数之一是一个带有字符串值的变量。此字符串值是列表的名称。init应使用此字符串值将类对象附加到该列表中。我做错了什么 我尝试过使用locals()和globals(),但结果是“TypeError:unhabable type:'list'”。还尝试了vars(),但没有使用 refList = [] cmpList = [] class Part(object): def __init__(self, origin, name, type, listName)

我要传递给类init的参数之一是一个带有字符串值的变量。此字符串值是列表的名称。init应使用此字符串值将类对象附加到该列表中。我做错了什么

我尝试过使用locals()和globals(),但结果是“TypeError:unhabable type:'list'”。还尝试了vars(),但没有使用

refList = []
cmpList = []

class Part(object):
    def __init__(self, origin, name, type, listName):
        self.origin = origin
        self.name = name
        self.type = type
        partListName = locals()[listName]
        partListName.append(self)

#... some file parsing..

part1 = Part((str(origin), str(name) ,str(type), 'refList') 

# ... some other file parsing ...

part2 = Part((str(origin), str(name) ,str(type), 'cmpList')

欢迎来到SO Ram我认为你应该重新思考你的代码,因为这不是一个总是这样做的好方法。例如,最好直接传递列表或相关内容

但是,您的代码的问题是应该使用
globals()
函数。我真的建议你看下一篇文章,以获得更多关于如何/何时使用Python3这个有用功能的知识

此外,您必须使用
global
keywoard声明变量,因为您将从
Part
类中引用这些变量

global refList = []
global cmpList = []
综上所述,您的关键代码行应该如下所示:

partListName = globals()[listName]

欢迎来到SO Ram我认为你应该重新思考你的代码,因为这不是一个总是这样做的好方法。例如,最好直接传递列表或相关内容

但是,您的代码的问题是应该使用
globals()
函数。我真的建议你看下一篇文章,以获得更多关于如何/何时使用Python3这个有用功能的知识

此外,您必须使用
global
keywoard声明变量,因为您将从
Part
类中引用这些变量

global refList = []
global cmpList = []
综上所述,您的关键代码行应该如下所示:

partListName = globals()[listName]

首先,你应该根据第二条将你的类名重命名为
class Part
,你为什么要这样做?你的最终目标是什么?谢谢你的重播和澄清。我期望从两个不同的文件生成大量的对象。我想找到两个文件之间不同的特定对象。使用列表可以实现快速搜索和查找。(o(n))首先,你应该根据第二条将你的类名重命名为
class Part
,你为什么要这样做?你的最终目标是什么?谢谢你的重播和澄清。我期望从两个不同的文件生成大量的对象。我想找到两个文件之间不同的特定对象。使用列表可以实现快速搜索和查找。(o(n))