在我的测试套件中,我有一个名为" utils.py"的文件。其中我有许多测试所需的各种功能。为了实现这一目标,我创建了一个" Utils" class并拥有其中的所有函数。
一位拥有更多Python经验的同事坚持认为不应该有这样的类,而所有这些功能都应该是顶级的。因此" Utils.get_feature_id()"变成" get_feature_id()"。
你会赞同他的断言吗?
罗伯特
答案 0 :(得分:5)
在这种情况下,您使用class
的唯一方法就是在命名空间中实际拥有“方法”。我同意你的同事,你可以将这些功能放在顶层,但保存在一个模块中,这样它们确实会被放入命名空间,例如。
import utils
utils.get_feature_id()
而不是以下内容,它会假设您将所有方法标记为@staticmethod
,这又会添加一个不必要的图层。
import utils
utils.Utils.get_feature_id()
答案 1 :(得分:1)
是。如果函数不访问self
,则它很可能不是一种方法。如果您的目标是将功能安排在不同的命名空间中,则可以使用完整模块。 Python在任何地方都使用名称空间,因此我们不需要回避C ++倾向于和Java强制执行的全局名称(实际上,因为它们毕竟不是全局名称)。