Python で文字列クラス名からオブジェクトを生成
◯ strcls 関数
def strcls(class_name): return globals()[class_name]
◯ 使用例
def sample_code(): obj = strcls('Cls')(2, 3) print(obj.meth()) # 5 def strcls(class_name): return globals()[class_name] class Cls(object): def __init__(self, a, b): self.a = a self.b = b def meth(self): return self.a + self.b if __name__ == '__main__': sample_code()
◯ globals 関数
globals は、現在定義した名前の文字列をキー、束縛されたオブジェクトを値として格納した辞書です。
>>> class Cls(object): >>> pass >>> >>> for x in globals().items(): x ... '__name__' '__doc__' '__package__' '__loader__' '__spec__' '__annotations__' '__builtins__' 'Cls' 'e' >>>
globals()
現在のグローバルシンボルテーブルを表す辞書を返します。
ちなみに代入もできます。
>>> globals().update({'a': 1}) >>> a 1 >>>