具有相同参数但机构不同的多个工厂功能?

时间:2018-07-11 01:57:55

标签: python class parameters factory

我想根据参数创建方法的两个版本,然后将其附加到我的类中,因此我创建了一个工厂函数,如下所示:

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))

有没有一种方法可以简化此过程并删除样板代码?我不想继续为每种我需要两个版本的方法创建一个新工厂。

0 个答案:

没有答案