この記事では、Pythonの関数やメソッドを文字列で呼び出す方法を解説します。
Link関数やメソッドを呼ぶのに文字列を使うにはどうしたらいいですか? - プログラミング FAQ — Python 3.10.4 ドキュメント
スポンサーリンク
辞書を使う
辞書に文字列をkey
、関数をvalue
として格納することで任意の文字列で関数を呼び出すことができます。
def a():
print('a')
def b():
print('b')
# 辞書に関数を名前を付けて格納
d = {'f1': a, 'f2': b}
# 呼び出し
d['f1']()
実行結果
a
getattr関数を使う
getattr
関数は、オブジェクトの属性を文字列で取得することができます。
getattr(object, name[, default])
getattr
関数を使ってインスタンスから文字列でメソッドを取得して変数に代入します。
class C:
def a(self):
print('a')
def b(self):
print('b')
# インスタンス化
c = C()
# メソッドを文字列で取得
a = getattr(c, 'a')
# 呼び出し
a()
実行結果
a
globals関数、またはlocals関数を使う
globals
関数は、モジュールの名前空間を実装した辞書を返します。locals
関数もモジュールレベルではglobals
関数と同じ辞書を返します。
globals()
locals()
名前空間を実装した辞書から文字列で使用したい関数を取得することができます。
def a():
print('a')
def b():
print('b')
# 辞書
f1 = globals()['a']
f2 = locals()['b']
# 呼び出し
f1()
f2()
実行結果
a
b