53

在Python中,如果一个类的某些方法需要一个辅助函数,但辅助函数本身并没有使用类中的任何东西,我应该将辅助函数放在类内部还是外部?

我试着把它放在里面,但 PyLint 抱怨这个函数可以放在外面。

@卡尔:

该类是软件升级程序,如果该文件夹尚不存在,则辅助函数会创建一个新文件夹。该类位于一个模块中,到目前为止几乎只有该类的代码。稍后可能会添加其他类。

4

2 回答 2

63

在决定把辅助函数放在哪里时,我问的问题是,“它只适用于这个类吗?” 如果它可以在其他地方提供帮助,那么它会在模块级别进行;如果它确实只用于这个类,那么它与staticmethod(不需要类数据来完成它的工作)或classmethod(使用一些类,但不是实例,数据来完成它的工作)一起进入这个类。

另一个 python 代码检查器是pyflakes

于 2011-10-21T22:07:55.373 回答
10

辅助函数可能更适合模块级别而不是类。

如果您不同意这种情况,可以在类内部的函数上使用静态方法装饰器。简单地说,静态方法在同一类的对象实例之间的行为相同。它不依赖于实例数据。

出于这个原因,staticmethod装饰器在函数上呈现行为,使其不采用隐式的第一个参数(通常self是文档中所述的)。

于 2011-10-21T21:12:57.810 回答