【问题标题】:Using module-level functions inside class method python在类方法python中使用模块级函数
【发布时间】:2022-01-16 16:45:38
【问题描述】:

我想做的是从给定的图像中生成新的图像。

我已经创建了转换函数:

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

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

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

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

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

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)
           

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

【问题讨论】:

    标签: python class oop


    【解决方案1】:

    对于您的情况,让模块级函数而不是将它们全部作为静态添加到类中是完全可以的。

    该类负责处理参数并检索生成的图像。转换函数特定于它们自己的转换,因此无需将它们添加到处理程序中。

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

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 2011-02-17
      • 2017-12-24
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多