如何根据对同一 class 中另一个方法的输入调用 class 中的任何方法?

How can I call any method inside a class depending on an input to another method in the same class?

我正在尝试调用 class 中定义的特定方法。但是,此调用依赖于同一 class.

中另一个方法的输入
class my_class:
    def __init__(self, x):
        self.exam_score = x

    def math(self):
        print("Hello World!")

    def history(self):
        return "The top score is 12 out of {}.".format(self.exam_score)

    def subject_score(self, func):
        # Call either 'math' method or 'history' method based on input 'func'
        self.__getattribute__(func)()

my_class(30).subject_score('math')

在这里,我试图通过将 math 作为参数传递给 subject_score 方法来调用 class my_class 的方法 math

运行 上面的代码将给出 Hello World! 作为输出。

但是有没有比使用 self.__getattribute__(func)() 更好的方法呢?

谢谢!

subject_score()中,您必须return这样的属性:

class my_class:
    ...

    def subject_score(self, func):
        # Call either 'math' method or 'history' method based on input 'func'
        return self.__getattribute__(func)()

my_class(30).subject_score('math')

然后你会找到结果。