用于从(类、参数、kwargs)元组列表实例化的模式

2024-10-03 06:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组(可能相当复杂)Python类,它们执行特定的数据转换,例如主成分分析(PCA)。我们称这些块为组织在管道中,管道可以有任何块序列。几个管道组织在我们称之为的模型中。你知道吗

我将这些模型应用于并行于数千个数据集的带有块的管道。因此,我有数千个模型(以及管道和块)的实例,因为每个数据集都有自己的相关参数存储在块中(例如,PCA的主成分)。你知道吗

现在,由于我想要一组预定义的块管道,我在pipelines.py中定义了一些模块属性:

PIPELINE_A = [(Block1, args_block1, kwargs_block1),
              (Block2, args_block2, kwargs_block2),
              ...
              (BlockN, args_blockN, kwargs_blockN)]

我的models.py中的模型也是如此:

MODEL_1 = {'in': (PIPELINE_A, args_pl_A, kwargs_pl_A),
           ...
           'out': (PIPELINE_B, args_pl_B, kwargs_pl_B)}

这些可以看作是管道/模型配置,我可以从中实例化管道和模型对象。我还没有在模块中实例化它们,因为对于所有的数据集,它们应该是不同的。你知道吗

因为我总是需要一个类名、参数和关键字参数,所以我必须将它们都存储在一个元组中,直到我需要它们来实例化对象(例如[cl(*ar, **kw) for cl, ar, kw in MODEL_1)。这很难看,我想还有更好的办法。你知道吗

我想知道是否有人能为这种情况推荐一种设计模式或技巧。你知道吗

附言。 我意识到我可以在我的模块中实例化一个原型管道/模型,然后从中复制。不过,块可能会变得非常复杂,我想知道Python是否能够很好地处理深度复制。你知道吗


Tags: 模块数据实例py模型参数管道pipeline