Python - 使用字符串实例化列表,dicts和对象

时间:2016-07-07 22:34:10

标签: python python-3.x

Python 3.4.2问题,我已经广泛寻找答案,找不到它。

我试图通过为定义分配字符串来创建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:无法分配给函数调用

我想要的是说,循环遍历列表/字典并使用这些字符串来实例化类。有没有办法做到这一点?特殊语法我不知道?

顺便说一句,同样的事情应该是创建列表名称,字典名称等同样的事情的解决方案。哎呀,甚至像枚举变量名称或从列表中分配变量这样简单的东西。如何动态定义作业名称?

2 个答案:

答案 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]

上面的代码将为名称列表中的每个名称实例化一个类