Python - 我应该把我的帮助函数放在类的内部还是外部?

时间:2011-10-21 21:00:32

标签: python class pylint

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

我试过把它放进去,但是PyLint抱怨这个功能可能已被放到外面了。

@Karl:

该类是软件升级程序,如果文件夹尚不存在,辅助函数会创建一个新文件夹。这个类在一个模块中,现在几乎只有类的代码。其他课程可能会在以后添加。

2 个答案:

答案 0 :(得分:51)

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

另一个python代码检查器是pyflakes

答案 1 :(得分:9)

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

如果您不同意这种情况,可以在课程内部的函数中使用staticmethod decorator。简而言之,静态方法在同一个类的对象实例化之间表现相同。它不依赖于实例数据。

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