def resolve_dotted_attribute(obj, attr, allow_dotted_names=True):
    if allow_dotted_names:
        attrs = attr.split('.')
    else:
        attrs = [attr]

    for i in attrs:
        if i.startswith('_') and i != '__unicode__': # Allow the __unicode__ method to be called
            raise AttributeError(
                'attempt to access private attribute "%s"' % i
                )
        else:
            obj = getattr(obj,i)
    return obj
resolve_dotted_attribute(a, 'b.c.d') => a.b.c.d
dataset/ETHPy150Open klipstein/dojango/dojango/data/modelstore/utils.py/resolve_dotted_attribute