如何評估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