我正在编写一个代码,试图深入挖掘输入对象并找出该对象内的值。这是一个示例代码:

def GetThatValue(inObj):
    if inObj:
       level1 = inObj.GetBelowObject()
       if level1:
           level2 = level1.GetBelowObject()
           if level2:
               level3 = level2.GetBelowObject()
               if level3:
                  return level3.GetBelowObject()
    return None

在很多情况下,我最终都会遇到这些“倾斜的条件”。
我怎样才能避免这种情况?这看起来很脏,而且它是一种防御性编程。

最佳答案

try:
    return monkey.TypeWriter().Manufacturer().Shareholders().EthnicDistribution()
except AttributeError:
    return None

试着去拿东西。如果它不起作用,您就知道缺少其中一个级别。如果这些 GetBelowObject 调用实际上不是完全相同的方法,则此方法特别有效。

10-08 18:30