getattrの値を直接取得するのではなく、ラッパーを使用する必要がありidます。
a = getattr(myobject, 'id', None)
idこれは、「オブジェクトから属性を取得したいのですが、オブジェクト内にmyobject属性がない場合は、代わりに戻る」と言っているようなものです。しかし、それは効率的に行われます。idmyobjectNone
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(ユニバース)から開始し、を使用してアクセスしようとする属性ごとに再帰的に深くなるためgetattr、質問では次のようになります。
a = getattr(getattr(myobject, 'id', None), 'number', None)