Python 3.x 如何使用变量;持有;一个字符串值作为列表名?
我要传递给类init的参数之一是一个带有字符串值的变量。此字符串值是列表的名称。init应使用此字符串值将类对象附加到该列表中。我做错了什么 我尝试过使用locals()和globals(),但结果是“TypeError:unhabable type:'list'”。还尝试了vars(),但没有使用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)
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))