python如何在类上使用getattr

时间:2014-03-19 20:45:17

标签: python class module getattr

我有一个简单的用例,我有一个类:

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)?

我尝试使用getattr,但不知道该怎么做。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用

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

因为getattr(self, 'meth1')相当于self.meth1

答案 1 :(得分:0)

可以将funcname作为参数传递给getattr函数,并使用参数名称调用它。

def meth1(self, name):
    print name

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

那将打印通过meth1传递给meth2的值名称。