2015-06-21 66 views
1

是否可以创建对象名称由字符串指定的对象使用字符串作为名称创建对象

E.g.

create_object(QtGui.QLineEdit, 'myname') 
myname.setText = 'created!' 

也就是说

create_object(QtGui.QLineEdit, 'myname') 

等于

myname = QtGui.QLineEdit(self) 

回答

1

要创建局部变量,你可以使用globals()功能全局变量的字典。实施例 -

gbl = globals() 
gbl['myname'] = QtGui.QLineEdit 
gbl['test'] = 1234 
test 
>> 1234 

对于locals()函数,它返回局部变量的词典(的local namespace的拷贝),则可以使用该设置变量,只有当你在外部的功能和直接局部变量脚本部分,但设置为由locals()提供的字典将无法在函数内部工作(即使在该函数中,您将无法访问该变量),但在使用该函数时会出现与globals()完全相同的效果。

+0

不能使用'locals'定义局部变量。 – Daniel

+0

是的,你可以,你试过吗? –

+0

你可能没有尝试过。 – Daniel

0

您可以创建一个字符串指定对象名称的属性与setattr(),像这样:

setattr(sys.modules[__name__], 'myname', QtGui.QLineEdit) 
相关问题