假设我们有一个未知类型的任意对象,我们希望访问与此对象关联的同等任意属性,查询为字符串名称.我正在寻找获得这个价值的最佳实践方法.
在伪代码/ Python中,我正在考虑的当前策略是这样的:
def access_attribute(obj, attr): if type(obj) == types.FunctionType: return access_attribute(obj(), attr) elif type(obj) == types.DictType: return obj.get(attr) # ... etc.
要考虑的几件事:
如果对象上不存在该属性会发生什么?我可以提出例外.
该属性可能是深层嵌套的.
我认为这是编程语言和DSL解释器必须解决的问题,但我不知道标准/普遍接受的最佳实践.
已经提出了将自定义存储的DSL /代码eval
与对象一起传递到运行时的想法,但我想暂时避免使用这种特殊的解决方案并且更喜欢Pythonic.