我想根据参数创建方法的两个版本,然后将其附加到我的类中,因此我创建了一个工厂函数,如下所示:
def print_factory(self, AD):
def print_type(self, types, ratios):
for r in ratios:
print(r, getattr(self, f'get_{AD}')(types, r))
return print_type
对于单个方法,这可以很好地工作,但是我需要许多不同方法的两个版本,所以最终我将很多方法嵌入到这样的块中:
def factory(self, param):
def func(self, *args):
# use param here
return func
然后我遍历所有这样做的方法,并将它们附加到self
上,如下所示:
func_names = ['get_ratios', 'get', 'print']
for AD in ['ATK', 'DEF']:
for name in func_names:
factory = getattr(self, f'{name}_factory')
setattr(self.__class__, f'{name}_{AD}', factory(AD))
有没有一种方法可以简化此过程并删除样板代码?我不想继续为每种我需要两个版本的方法创建一个新工厂。