Python で文字列クラス名からオブジェクトを生成

◯ class_ 関数

def class_(class_name):
    return globals()[class_name]

◯ 使用例

class A:
  def __init__(self, a, b):
    self.a = a
    self.b = b
  
  def func(self):
    return self.a + self.b

a = class_("A")(2, 3)
a.func()
# 5

◯ globals 関数

globals()
現在のグローバルシンボルテーブルを表す辞書を返します。

globals は、現在定義した名前の文字列をキー、束縛されたオブジェクトを値として格納した辞書です。

Python 3.6.3 (default, Nov  5 2017, 23:48:30) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> class 'A': pass
>>> 
>>> g = globals()
>>> for e in g: e
... 
'__name__'
'__doc__'
'__package__'
'__loader__'
'__spec__'
'__annotations__'
'__builtins__'
'A'
'g'
'e'
>>>