2015-06-21 148 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) 
相關問題