使用字符串作为名称创建属性

时间:2015-06-21 17:17:39

标签: python

是否可以创建一个属性名称由字符串

指定的属性

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,但只是意识到它并没有解决我的第二个问题!

2 个答案:

答案 0 :(得分:2)

使用setattr

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

要获取该属性,您可以使用getattr

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

答案 1 :(得分:1)

您可以使用__setattr__()使用string设置属性。

示例 -

class CA:
    pass

c = CA()
c.__setattr__('name','value')
c.__setattr__('myname',QtGui.QLineEdit)
c.name
>> 'value'