在 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 行,其余为特定转换。将每个转换分离到它自己的文件中(或按范围分离它们)将是我的首选方式。
我想做的是根据给定的图像生成新图像。
我创建了转换函数:
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 行,其余为特定转换。将每个转换分离到它自己的文件中(或按范围分离它们)将是我的首选方式。