您应该使用
getattr包装器,而不是直接获取的值
id。
a = getattr(myobject, 'id', None)
这就像说“我想
id从对象中检索属性
myobject,但是如果
id对象内没有属性
myobject,则返回
None”。但这确实有效。
一些对象还支持以下
getattr访问形式:
a = myobject.getattr('id', None)根据OP请求,‘deep getattr’:
def deepgetattr(obj, attr): """Recurses through an attribute chain to get the ultimate value.""" return reduce(getattr, attr.split('.'), obj)# usage: print deepgetattr(universe, 'galaxy.solarsystem.planet.name')简单说明:
Reduce就像是就地递归函数。在这种情况下,它的工作是从
obj(Universe)开始,然后递归地为您尝试使用访问的每个属性加深
getattr,因此在您的问题中将是这样的:
a = getattr(getattr(myobject, 'id', None), 'number', None)


![如何返回属性的默认值?[重复] 如何返回属性的默认值?[重复]](http://www.mshxw.com/aiimages/31/455928.png)
