我无法在任何地方找到答案。
我有一个名为" vrf"。
的课程我有一个输入文件。
当Python迭代这个输入文件的行时,每次看到单词vrf时,我都想创建一个以下一个单词命名的对象。
所以,如果它正在读取" ip vrf TESTER", 我想动态创建一个名为TESTER的对象,类型为vrf。
TESTER = vrf()
我在世界上如何做到这一点?
我试过了:
line.split()[2] = vrf()
不能工作。
答案 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>}