指定要调用的方法

时间:2014-09-04 16:30:16

标签: python

考虑这个课程:

class Foo(object):

    def bar(self, name):
        return 'bar: ' + name

    def baz(self, name):
        return 'baz: ' + name

我需要告诉代码运行baz方法:

def run_a_method(method, name):
    f = Foo()
    f.method(name)

run_a_method('baz', 'Jeff Atwood')

此操作失败,并显示以下错误:

  

AttributeError:'Foo'对象没有属性'method'

在定义的任何类f上调用函数的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

首先,您需要正确定义您的类 - 不要忘记self参数:

class Foo(object):
    def bar(self, name):
        return 'bar: ' + name
    def baz(self, name):
        return 'baz: ' + name

然后,使用getattr()按名称访问属性:

>>> a = Foo()
>>> getattr(a, "baz")("Jeff Atwood")
'baz: Jeff Atwood'