如何根据对同一 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')
然后你会找到结果。
我正在尝试调用 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')
然后你会找到结果。