使用字符串作为名称创建对象

时间:2015-06-21 15:09:48

标签: python

是否可以创建一个对象名由字符串

指定的对象

E.g。

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

那是

create_object(QtGui.QLineEdit, 'myname')

等于

myname = QtGui.QLineEdit(self)

3 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:1)

要创建局部变量,可以使用globals()函数获取全局变量的字典。示例 -

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

对于具有locals()函数的局部变量,它返回局部变量的字典(local namespace的副本),只有在函数外部时才可以使用它来设置变量。直接在脚本部分,但是设置为locals()提供的字典在函数内部不起作用(即使在该函数中也无法访问该变量),当使用它时,它具有完全正确的函数效果与globals()相同。

答案 2 :(得分:0)

您可以创建一个带有字符串的属性,该字符串使用setattr()指定对象名称,如下所示:

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