使用字符串作为名称创建对象
问题描述:
是否可以创建对象名称由字符串指定的对象使用字符串作为名称创建对象
E.g.
create_object(QtGui.QLineEdit, 'myname')
myname.setText = 'created!'
也就是说
create_object(QtGui.QLineEdit, 'myname')
等于
myname = QtGui.QLineEdit(self)
答
要创建局部变量,你可以使用globals()
功能全局变量的字典。实施例 -
gbl = globals()
gbl['myname'] = QtGui.QLineEdit
gbl['test'] = 1234
test
>> 1234
对于locals()
函数,它返回局部变量的词典(的local namespace
的拷贝),则可以使用该设置变量,只有当你在外部的功能和直接局部变量脚本部分,但设置为由locals()
提供的字典将无法在函数内部工作(即使在该函数中,您将无法访问该变量),但在使用该函数时会出现与globals()
完全相同的效果。
答
您可以使用globals
。例如:
class A:
a = 'Hello'
test = globals()['A']
print test.a #It will print 'Hello'
欲了解更多信息:http://www.diveintopython.net/html_processing/locals_and_globals.html
不能使用'locals'定义局部变量。 – Daniel
是的,你可以,你试过吗? –
你可能没有尝试过。 – Daniel