Pythonで文字列からモジュールの関数を呼び出す方法|getattr()の使い方を解説
getattr()を使って文字列から関数を呼び出す
Pythonでは、組み込み関数 getattr() を使うことで、関数名を表す文字列からモジュール内の関数を動的に取得し、呼び出すことができます。
import fibo # 文字列から関数オブジェクトを取得 func = getattr(fibo, 'baz') # 取得した関数を呼び出す result = func() print(result)
getattr(モジュール名, '関数名') のように指定すると、その名前を持つ属性(ここでは関数)を取得できます。取得した関数オブジェクトは、通常の関数と同じように () を付けて呼び出すことが可能です。
さまざまな場面で活用できる
getattr() はモジュールレベルの関数だけでなく、以下のような幅広い対象に対して使用できます。
- クラスインスタンスにバインドされたメソッド
- モジュール内で定義された関数
- クラスメソッドやスタティックメソッド
例えば、インスタンスのメソッドを文字列から呼び出す場合は次のように書きます。
class MyClass:
def hello(self):
return "Hello!"
obj = MyClass()
method = getattr(obj, 'hello')
print(method()) # Hello! と表示される
注意点:存在しない属性への対処
指定した名前の属性が存在しない場合、AttributeError が発生します。第三引数にデフォルト値を渡すことで、エラーを回避しつつ安全に処理できます。
# 属性が存在しない場合は None を返す
func = getattr(fibo, 'baz', None)
if func:
result = func()
else:
print("関数が見つかりません")
このように getattr() を使えば、設定ファイルやユーザー入力から得た文字列をもとに関数を柔軟に実行でき、プラグイン機構やコマンドディスパッチなどの実装にも役立ちます。
-
MATLABからPython関数を呼び出す方法を徹底解説
MATLABでは、バージョン2014b以降からPythonライブラリが標準で利用できるようになりました。そのため、2014b以降のバージョンを使用していれば、MATLAB上で直接Pythonコードを実行することが可能です。PythonモジュールをMATLABで使う基本この機能により、MATLABの中でPythonモジュールを活用できます。特別な設定は一切不要で、使用したいPythonライブラリ名の前に「py」というプレフィックスを付けるだけで呼び出せます。ここでは、Pythonのcalendarモジュールを例に、うるう年の判定を行ってみましょう。py.calendar.isleap(2016)
-
コマンドラインからPythonモジュールを呼び出す方法
コマンドラインからPythonモジュールを呼び出す基本方法 Pythonでスクリプトをモジュールとして作成する場合、その動作を手軽に確認する方法のひとつが、スクリプトの末尾に関数呼び出しを追加して実行することです。 1. スクリプトの末尾に関数呼び出しを追加する たとえば、次のように関数 fubar() を定義したスクリプトがあるとします。ファイルの最後に関数を呼び出すコードを記述します。 def fubar(): # 何か便利な処理を行う print(fubar が実行されました) fubar() 2. コマンドプロンプトから実行する ターミナル(コマンドプロンプト)で