Получить объект класса python из строки имени класса в том же модуле

У меня есть класс

class Foo():
    def some_method():
        pass

И еще один класс в том же модуле:

class Bar():
    def some_other_method():
        class_name = "Foo"
        #can I access the class Foo above using the string "Foo"?

Я хочу иметь доступ к классу Foo, используя строку "Foo".

Я могу сделать это, если я в другом модуле, используя:

from project import foo_module
foo_class = getattr(foo_module, "Foo")

Могу ли я сделать то же самое в одном модуле?

Ребята из IRC предположили, что я использую map dict, который сопоставляет имена классов классов классам, но я не хочу этого делать, если есть более простой способ.

Ответы

Ответ 1

import sys
getattr(sys.modules[__name__], "Foo")

# or 

globals()['Foo']

Ответ 3

globals()[class_name]

Обратите внимание, что если это не является строго необходимым, вы можете захотеть реорганизовать ваш код, чтобы не использовать его.