Pergunta

I have a simple use case, I have a class:

class A:
  def meth1(self, name):
    ...
  def meth2(self, name, funcname):
    # funcname is a string 'meth1'
    # how do I invoke meth1 by using funcname string here self.funcname(name)?

I tried using getattr, but was not sure how to go about it.

Thanks!

Foi útil?

Solução

You could use

def meth2(self, name, funcname):
    getattr(self, funcname)(name)

since getattr(self, 'meth1') is equivalent to self.meth1.

Outras dicas

Could pass the funcname as a parameter to the getattr function and invoke it with the parameter name.

def meth1(self, name):
    print name

def meth2(self, name, funcname):
    getattr(self, funcname)(name)

That would print the value name passed to meth2 via meth1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top