所以我试图弄清楚我想做的事情是否可能。我正在为应用程序编写一些测试代码,并且我的对象包含代表我们产品界面中的一些元素的属性。我想要做的是能够将应用程序运行器和数据对象传递给一个新类,并让它根据数据对象中的属性子集动态生成一组访问器属性。到目前为止我的想法:
- 创建一个属性的子类,其中包含从接口中提取额外信息所需的元数据
- 重构现有数据对象以使用 UI 中相关字段的新属性子类
- 创建一个接受 UI 驱动程序对象和数据对象的新生成器类
- 反映数据对象以获取其所有属于新属性子类类型的成员的列表
- 根据属性子类中的元数据将来自 UI 的信息存储到生成器类实例的成员(计划使用
setattr
) - 在运行时创建属性,使 (b) 中创建的成员只读,并提供与现有代码一致的接口(即使用
.[name]
而不是.[name]()
)
我想除了步骤 3c 之外,我已经弄清楚了一切。有没有办法在运行时动态创建属性?任何帮助将不胜感激。