在Python中,如果类的某些方法需要辅助函数,但是辅助函数本身不使用类中的任何东西,我应该将辅助函数放在类的内部还是外部?
我试过把它放进去,但是PyLint抱怨这个功能可能已被放到外面了。
@Karl:
该类是软件升级程序,如果文件夹尚不存在,辅助函数会创建一个新文件夹。这个类在一个模块中,现在几乎只有类的代码。其他课程可能会在以后添加。
答案 0 :(得分:51)
在决定把辅助函数放在哪里时,我问的问题是,“它只适用于这个类吗?”如果它可以在其他地方帮助,那么它在模块级别;如果它确实只适用于这个类,那么它会在类中使用staticmethod
(不需要类数据来完成它的工作)或classmethod
(使用一些类,但不是实例,数据要做它的工作)。
另一个python代码检查器是pyflakes。
答案 1 :(得分:9)
辅助函数可能更适合模块级而不是类。
如果您不同意这种情况,可以在课程内部的函数中使用staticmethod decorator。简而言之,静态方法在同一个类的对象实例化之间表现相同。它不依赖于实例数据。
出于这个原因,staticmethod
装饰器在函数上呈现行为,使得它不会采用隐含的第一个参数(通常为self
),如文档中所述。