创建从string命名的类对象实例?

时间:2016-08-04 14:57:12

标签: python object dynamic

我无法在任何地方找到答案。

我有一个名为" vrf"。

的课程

我有一个输入文件。

当Python迭代这个输入文件的行时,每次看到单词vrf时,我都想创建一个以下一个单词命名的对象。

所以,如果它正在读取" ip vrf TESTER", 我想动态创建一个名为TESTER的对象,类型为vrf。

TESTER = vrf()

我在世界上如何做到这一点?

我试过了:

line.split()[2] = vrf()

不能工作。

4 个答案:

答案 0 :(得分:2)

一般来说,动态创建的变量名称是个坏主意。相反,您应该创建一个字典,其中名称是键,实例是值

在你的情况下,它看起来像这样:

objects = {}
...
object_name = line.split()[2]
objects[object_name] = vrf()

然后您可以通过这种方式访问​​它,例如:     对象[" TESTER"] 会给你相应的vrf实例。

答案 1 :(得分:1)

为什么不用字典?

object = {}
object[line.split()[2]] = vrf()

答案 2 :(得分:0)

可以编辑globals()字典来执行此操作:

>>> globals()['TEST'] = vrf()
>>> type(TEST)
# <class 'vrf'>

答案 3 :(得分:0)

您尝试做的不是一个好主意,而是使用字典,或者如果您的对象有一个存储名称信息的实例变量,例如name,将数据绑定在那里。

objs = {}
objs[line.split()[2]] = vrf()

或(,如果有的话

v = vrf(line.split()[2])

v = vrf(); v.name = line.split()[2]

示例输出:

print objs
>>> {'vrf' :  <__main__.vrf instance at 0x7f41b4140a28>}