1. ホーム
  2. python

[解決済み] Python: 文字列名から関数を呼び出す [重複].

2022-11-27 05:42:41

質問

例えばstrオブジェクトがあるのですが menu = 'install' . この文字列からinstallメソッドを実行したい。例えば menu(some, arguments) を呼び出すと install(some, arguments) . 何か良い方法はないでしょうか?

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

クラス内であれば、getattrを使用することができます。

class MyClass(object):
    def install(self):
          print "In install"

method_name = 'install' # set by the command line options
my_cls = MyClass()

method = None
try:
    method = getattr(my_cls, method_name)
except AttributeError:
    raise NotImplementedError("Class `{}` does not implement `{}`".format(my_cls.__class__.__name__, method_name))

method()

とか、関数であれば

def install():
       print "In install"

method_name = 'install' # set by the command line options
possibles = globals().copy()
possibles.update(locals())
method = possibles.get(method_name)
if not method:
     raise NotImplementedError("Method %s not implemented" % method_name)
method()