2015-06-21 77 views
0

是否可以創建屬性,其中屬性名稱由字符串指定使用字符串作爲名稱創建屬性

E.g.

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

也就是說

create_attribute(QtGui.QLineEdit, 'myname') 

等於

self.myname = QtGui.QLineEdit(self) 

我已經問類似的問題Creating an object using string as a name但只是爲了實現它並沒有解決我的第二個問題!

+0

使用字符串作爲[創建對象的可能重複名字(http://stackoverflow.com/questions/30966015/creating-an-object-using-string-a s-a-name) – khagler

+0

'create_attribute'不知道'self'。所以不可能。 – Daniel

回答

2

使用setattr

setattr(self, 'myname', QtGui.QLineEdit(self)) 

獲取屬性,你可以使用getattr

getattr(self, 'myname').setText('bla') 
1

您可以使用__setattr__()使用string來設置屬性。

示例 -

class CA: 
    pass 

c = CA() 
c.__setattr__('name','value') 
c.__setattr__('myname',QtGui.QLineEdit) 
c.name 
>> 'value' 
相關問題