Python:另一个类的调用方法,指定为函数的参数

时间:2017-06-09 03:21:35

标签: python python-3.x

我知道下面简化的例子令人尴尬丑陋...因此我为什么要来与世界分享它。

我希望能够从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,它将每个方法的字符串形式与实际的东西联系起来?

1 个答案:

答案 0 :(得分:2)

您正在寻找的可能只是:

def callmethod(method, arg)
    inst = cls(arg)
    return getattr(inst, method)()

您可以将a.b视为getattr(a, "b")

的语法糖