我正在处理一个包含数十个"业务逻辑"方法和少量辅助方法的大型Python类。在结尾处有一些有趣的代码,用于运行所有的 "calc_metric_*" 方法。
大致上像这样:
class CalculateMetrics:
...
def calc_metric_x1(self):
...
def calc_metric_x2(self):
...
def calc_metric_x3(self):
...
def calc_metric_x4(self):
...
...
def calc_metric_x50(self):
...
def run_all(self):
method_list = [m for m in dir(self)
if callable(getattr(self, m))
and m.startswith('calc_metric_')]
for m in method_list:
# Call each method
getattr(self, m)()
我觉得使用getattr
和引用方法名称的方式似乎不太理想。在Python中有更好的实现方法吗?
run_all()
方法运行更加明确。 - MYK