2017-09-05 30 views
0

在我的测试套件中,我有一个名为“utils.py”的文件,其中包含许多测试所需的各种功能。为了做到这一点,我创建了一个“Utils”类,并具有其中的所有功能。Pythonic是否具有不属于班级的全局功能?

一位拥有更多Python经验的同事坚持认为不应该有这样的类,而是所有这些函数都应该是顶级的。因此“Utils.get_feature_id()”变成了“get_feature_id()”。

您是否同意他的观点?

罗伯特

+0

这主要是个人喜好的问题(与项目其他部分保持一致)。如果这个类仅仅用于分组函数,我个人会和你的同事一起,并且争辩说这个模块是一个更好的封装单元。 – NPE

+0

我同意@NPE。 – direprobs

+2

Python不是Java。你不需要把所有东西都放在课堂上。 – user2357112

回答

5

在这种情况下,唯一的事情,你正在使用的class的是基本上有一个命名空间中的“方法”。我同意你的同事,你可以将这些函数设置为最高级别,但保存在一个模块中,以便它们确实被放入命名空间,例如

import utils 
utils.get_feature_id() 

相反以下,这将想你打上所有的方法为@staticmethod这又只是增加了不必要的层。

import utils 
utils.Utils.get_feature_id() 
1

是的。如果一个函数不能访问self,它应该很可能不是一个方法。如果您的目标是将您的函数安排在不同的名称空间中,则可以使用完整模块。 Python在任何地方都使用名称空间,所以我们不必回避像C++趋向于和Java强制的全局名称(实际上,因为它们毕竟不是全局的)。

相关问题