从对象内的字符串名称调用函数

时间:2016-12-09 02:37:17

标签: python

我有以下两个类:

class A(object):
   def caller(self,name):
      # want to invoke call() here when name="call"

class B(A):
   def call(self):
      print("hello")

鉴于以下内容:

x= B()
x.caller("call") # I want to have caller() invoke call() on the name.

我不想检查name的值我想让它自动调用给定字符串作为self上的函数。

2 个答案:

答案 0 :(得分:2)

使用__getattribute__

class A(object):
   def caller(self,name):
      self.__getattribute__(name)()

class B(A):
   def call(self):
      print("hello")

x= B()
x.caller("call")

输出

hello

答案 1 :(得分:1)

也可以使用eval

class A(object):
   def caller(self,name):
      eval('self.%s()' % name)


class B(A):
   def call(self):
      print("hello")


x= B()
x.caller("call")

输出

您好 [完成0.6秒]