所以我试图弄清楚我想做的事情是否可行。我正在为一个应用程序编写一些测试代码,并且我有一些对象包含代表我们产品界面中的一些元素的属性。我想要做的是能够将应用程序运行器和数据对象传递给新类,并让它根据数据对象中属性的子集动态生成一组访问器属性。我的想法到目前为止:
setattr
).[name]
代替.[name]()
)我认为除了第3c步之外我已经弄明白了。有没有办法在运行时动态创建属性?任何帮助将不胜感激。
答案 0 :(得分:0)
不确定这是你想要的。但您可以使用 getattr 和 setattr 方法定义动态只读属性。这是一个例子:
class X(object):
data = {'x' : 123, 'y' : 456}
def __getattr__(self, name):
if name in self.data:
return self.data[name]
raise AttributeError(name)
def __setattr__(self, name, value):
if name in self.data:
return None
return super(X, self).__setattr__(name, value)
a = X()
print a.x, a.y
a.x = 0
print a.x