Ответ (надеюсь) никто никогда не хотел
Eval как поведение
getattr(locals().get("foo") or globals().get("foo"), "bar")()
Почему бы не добавить автоматический импорт
getattr(
locals().get("foo") or
globals().get("foo") or
__import__("foo"),
"bar")()
Если у нас есть дополнительные словари, которые мы хотим проверить
getattr(next((x for x in (f("foo") for f in
[locals().get, globals().get,
self.__dict__.get, __import__])
if x)),
"bar")()
Нам нужно идти глубже
getattr(next((x for x in (f("foo") for f in
([locals().get, globals().get, self.__dict__.get] +
[d.get for d in (list(dd.values()) for dd in
[locals(),globals(),self.__dict__]
if isinstance(dd,dict))
if isinstance(d,dict)] +
[__import__]))
if x)),
"bar")()