Python で文字列で与えた名前のクラスを生成 ― 2021年05月06日 14時51分54秒
今回の例はファイル内にあるクラスを生成。
sys.modules に __name__ を渡して現在処理中のモジュールを探している。その後、Class の名前で取得。そのまま、クラスのインスタンスを生成。
% cat instantiate_from_string.py
#!/usr/local/bin/python3.7
import sys
class Class:
pass
module = sys.modules[ __name__ ]
class_ = getattr( module, "Class" )
instance = class_()
print( Class() )
print( instance )
両方ともインスタンスの生成が出来ている。
これを利用すれば、クラスの名前をプログラムへの引数などとして文字列で受け取り、任意のクラスを生成できる。
% python3.7 instantiate_from_string.py
>__main__.Class object at 0x20d529ec<
>__main__.Class object at 0x20d5254c<
前回。
最近のコメント