从Class方法中提取重复代码

时间:2018-06-28 12:58:11

标签: python python-3.x class

我正在学习在Python上使用类,遇到了这个问题,我在类中有几种方法。每个方法中都有一些非常相似或完全相同的代码块。

从代码中删除重复项并因此将其缩短的最佳实践是什么?

它看起来像这样:

class BasicClass(Object):

def FirstMethod(self, some_variable):
    # Chunk of code that repeats across multiple methods
    ...
    #Unique code to this method
    ...

def SecondMethod(self, some_variable):
    # Chunk of code that repeats across multiple methods
    ...
    #Unique code to this method
    ...

def ThirdMethod(self, some_variable):
    # Chunk of code that repeats across multiple methods with slight variation
    ...
    #Unique code to this method
    ...

我应该只编写一个辅助函数文件并将其导入吗?或者,还有更好的方法?

3 个答案:

答案 0 :(得分:3)

这实际上取决于代码的外观。使用助手功能听起来很合理。您的第三种方法的细微变化可能是通过将一个可选参数传递给您的辅助函数,然后执行该变化来实现的。

如果您需要更详细的建议,则需要显示实际代码...

答案 1 :(得分:1)

您的问题实际上与类无关-与普通函数一样。

当然,答案是,当您将相同的精确代码重复3次或更多次时,您可能确实希望将其分解为专用函数。

但是(大但是)您首先要确保这种重复不是偶然的-也就是说,它是相同的代码,因为出于相同的原因它实际上在做相同的事情。有时,您会在代码中发现重复的模式,急于将其分解,然后(例如在实现其他功能时)发现此重复的模式只是暂时的巧合,并且您知道必须对其进行“分解”在一个地方以给定的方式改变,而在另一个地方以不同的方式改变。

答案 2 :(得分:0)

这取决于...如果这是一个您认为对其他模块有用的实用程序代码,是的,您可以将其封装在一个类中。否则,如果这是该模块的特定逻辑,只需按照其他建议在该类中创建第 4 个新方法即可。