如何评估Python:如何用getattr获取对象属性的属性?
a = myobject.id.number
和返回None如果myObject的是None
带有内置getattr
?也许getattr(myobject, "id.number", None)
?
如何评估Python:如何用getattr获取对象属性的属性?
a = myobject.id.number
和返回None如果myObject的是None
带有内置getattr
?也许getattr(myobject, "id.number", None)
?
getattr(getattr(myobject, "id", None), "number", None)
应该工作。
稍微超过通用的解决方案同时考虑所有成员:
if myobject and myobject.id and myobject.id.number:
a = myobject.id.number
else:
a = None
这里是一个一行
a = myobject is not None and myobject.id.number or None
它不检查ID是否为无,但这不是原来的问题的一部分。
return myobject.id.number if myobject else None
有没有更好的方法来做到这一点? – 2015-12-03 21:20:41
这应该很好地扩展到任何深度:
reduce(lambda obj, attr : getattr(obj, attr, None), ("id","num"), myobject)
有没有你心里有这方面的任何特定用例? – 2013-02-17 20:04:02