我有以下两个类:
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上的函数。
答案 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秒]