Python, как динамически вызвать метод из класса

Есть класс:

class Python:
  def method(self, a):
    pass

python_instance = Python()

Хочу сделать так:

dynamic_method = "method"
python_instance[dynamic_method]("test")

Как такое провернуть?


Ответы (2 шт):

Автор решения: GrAnd

Это довольно просто. Сначала получаем ссылку на метод экземпляра класса при помощи getattr(), а потом просто зовём этот метод по полученной ссылке.

class Python:
  def method(self, a):
    print(a)

python_instance = Python()

dynamic_method = "method"
getattr(python_instance, dynamic_method)("test")
→ Ссылка
Автор решения: TigerTV.ru

Можно так

class Python:
    def method(self, a):
        print(a)
    def __getitem__(self, index):
        return getattr(self, index)

ins = Python()
mymethod = "method"
ins[mymethod]("test")
→ Ссылка