如何将成员函数名称评估为函数对象?

时间:2013-04-10 09:26:28

标签: python eval

我在A类中定义了一些函数

并且在A类中,我有一个函数来通过名字

调用另一个函数

但是当我使用eval('funcname')时,它表示函数为not defined

如何将成员函数名称作为函数对象进行评估?

3 个答案:

答案 0 :(得分:3)

你的问题并不完全清楚,但听起来你问的是如何通过名字从该类中的另一个方法调用类中的一个方法。

由于所有实例方法都有self参数,因此您只需通过getattr查找所需的方法:

def call_by_name(self, method_name):
    method = getattr(self, method_name)
    method()

答案 1 :(得分:0)

以下作品,但你为什么要这样做呢?

class A(object):
    def __init__(self):
        pass

    def fa(self):
        print('Hello')
    def fb(self):
#        self.fa()
        eval('self.fa()')

a = A()
a.fb()

答案 2 :(得分:0)

我希望它很有用,

如果你想在这里调用实例方法

class A:
def foo(self):
         print " ok"
         return "ok"
 def bar(self):
         #i = A()
         #print eval('i.foo()')
          print eval('self.foo()')
 a = A()
 a.bar()

方法是实例属性而不是类属性,所以我们必须调用 仅通过实例的方法。