我要传递给Class init 的参数之一是带有字符串值的变量。此字符串值是列表的名称。 init 应该使用此字符串值将类对象附加到该列表。我做错了什么?
我尝试使用locals()和globals(),但以“ TypeError:unhashable 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')
答案 0 :(得分:0)
欢迎使用SO Ram!。我认为您应该重新考虑您的代码,因为这不是始终执行此操作的好方法。例如,最好直接传递列表或相关内容。
但是,您的代码问题是您应该使用globals()
函数。我真的建议您阅读下一篇文章,以获取有关如何/何时使用Python3的这一有用功能的更多知识。
此外,您必须使用global
键盘声明变量,因为您将从Part
类中引用此变量。
global refList = []
global cmpList = []
说完所有这些,您的关键代码行应如下所示:
partListName = globals()[listName]