考虑这个课程:
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
上调用函数的正确方法是什么?
答案 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'