在 class 方法 python 中使用模块级函数

Using module-level functions inside class method python

我想做的是根据给定的图像生成新图像。

我创建了转换函数:

def trans_func_1(image,param1,param2):
    #do some transformation

def trans_func_2(image,param1,param2):
    #do some transformation

所有功能都在图像级别运行。

然后我有一个叫做 generate_image 函数的大函数,它将包含图像的文件夹路径、上述函数的参数以及对图像应用转换函数作为参数。

我的想法是将转换函数定义为模块级函数,并为大函数创建一个 class,看起来像这样

class ImageGeneration:


def __init__(self,path,trans_param1,trans_param2):
    
    self.path = path
    self.trans_param1 = trans_param1
    self.trans_param2 = trans_param2
    ...

def image_generation(self):
    for image in self.path:
        
        for i in self.trans_param1:
            img = trans_func_1(image,i)
            write_img(img)  

        for i in self.trans_param2:
            img = trans_func_2(image,i)
            write_img(img)
           

我的问题是:在 class 中使用模块级函数是一种好习惯吗?或者最好将它们定义为 @staticmethod

对于您的情况,让模块级函数运行而不是将它们全部添加到 class 作为静态是完全没问题的。

class 负责处理参数并检索生成的图像。转换函数特定于它们自己的转换,因此没有必要将它们添加到处理程序中。

这还可以让您拥有更好的模块化。根据您要创建的转换数量,您可能有 500 行 class,其中仅处理 40 行,其余为特定转换。将每个转换分离到它自己的文件中(或按范围分离它们)将是我的首选方式。