我知道下面简化的例子令人尴尬丑陋...因此我为什么要来与世界分享它。
我希望能够从cls
调用类方法,在callmethod
中指定特定方法。
class cls(object):
def __init__(self, var1):
self.var1 = var1
def method1(self):
return self.var1 ** 2
def method2(self):
return self.var1 ** 3
def callmethod(method, var1):
methods = {'method1' : cls(var1).method1(),
'method2' : cls(var1).method2()
}
return methods[method]
callmethod('method1', 2)
Out[56]: 4
有没有办法解决这个问题,而没有创建一个(可能是大而笨重的)dict,它将每个方法的字符串形式与实际的东西联系起来?
答案 0 :(得分:2)
您正在寻找的可能只是:
def callmethod(method, arg)
inst = cls(arg)
return getattr(inst, method)()
您可以将a.b
视为getattr(a, "b")