1. ホーム
  2. python

[解決済み] Pythonのメソッドを名前で呼び出す

2023-03-24 14:28:21

質問

オブジェクトとメソッド名を文字列で指定した場合、そのメソッドを呼び出すにはどうしたらよいでしょうか。

class Foo:
    def bar1(self):
        print 1
    def bar2(self):
        print 2

def callMethod(o, name):
    ???

f = Foo()
callMethod(f, "bar1")

どのように解決するのですか?

組み込みの getattr() 関数を使用します。

class Foo:
    def bar1(self):
        print(1)
    def bar2(self):
        print(2)

def call_method(o, name):
    return getattr(o, name)()


f = Foo()
call_method(f, "bar1")  # prints 1

また setattr() を使って、クラスの属性を名前で設定することもできます。