我试图通过为定义分配字符串来创建python对象(或任何你称之为list,dicts和classe / object instantiations的对象)。换句话说,我想在赋值方程的左侧使用字符串。
例如,如果我们有一个类和一个赋值/实例化:
class char_info:
def __init__(self):
self.name = 'Joe'
self.mesh = 'Suzanne'
newchar = char_info()
print (newchar.name)
乔
我想使用来自其他源(比如列表)的字符串作为实例化名称,而不是“newchar”。但是,我不确定语法。我需要在等式的左边引用这个字符串。此外,我如何在以后的代码中引用它,因为我事先不知道名称,只是在运行时?
显然这不起作用:
list = ['Bob', 'Carol', 'Sam']
# list[0] = char_info() #this doesn't work, it would
# try assigning the value of char_info() to the item in [0]
str(list[0]) = char_info() #also doesn't work, obviously
print (str(list[0]) #obviously this is wrong, but how do you reference?
位置:: -1
错误:文件“\ Text”,第2行
SyntaxError:无法分配给函数调用
我想要的是说,循环遍历列表/字典并使用这些字符串来实例化类。有没有办法做到这一点?特殊语法我不知道?
顺便说一句,同样的事情应该是创建列表名称,字典名称等同样的事情的解决方案。哎呀,甚至像枚举变量名称或从列表中分配变量这样简单的东西。如何动态定义作业名称?
答案 0 :(得分:-1)
您可以使用exec
,即exec(list[0] + "=char_info()")
,但这不是一个好主意。使用字典更好:
chars = {}
chars[list[0]] = char_info()
答案 1 :(得分:-1)
我想要的是说,循环遍历列表/字典和 使用这些字符串来实例化该类。有什么办法吗? 此?
class char_info:
def __init__(self, name):
self.name = name
list_names = ['Bob', 'Carol', 'Sam']
list_char_info = [char_info(name) for name in list_names]
上面的代码将为名称列表中的每个名称实例化一个类