Python で文字列で与えた名前のクラスを生成2021年05月06日 14時51分54秒

インスタンスのクラス名を取得したが、今度は逆。クラス名を元に、インスタンスを生成する。

今回の例はファイル内にあるクラスを生成。

% 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 )
sys.modules に __name__ を渡して現在処理中のモジュールを探している。その後、Class の名前で取得。そのまま、クラスのインスタンスを生成。

両方ともインスタンスの生成が出来ている。

% python3.7 instantiate_from_string.py
>__main__.Class object at 0x20d529ec<
>__main__.Class object at 0x20d5254c<
これを利用すれば、クラスの名前をプログラムへの引数などとして文字列で受け取り、任意のクラスを生成できる。

前回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/05/06/9374692/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。