组织效用函数

Organising utility functions

与其说是编码问题,不如说这是最佳实践问题。我写了一个项目,在项目中我有一些"helper functions"。我把它们放在一个单独的 class 中,每个函数都是 @staticmethod

我的同事认为我不应该将其作为 class 和 @staticmethod 而应该将它们作为一个模块。将模型导入我的代码,并直接使用函数而不是实例化 class。

我不确定,所以决定就 SO 提问。

myproject/
├── actual_code/
│   └── main.py
└── utils/
    └── helper_funcs.py

问。 helper_funcs.py 应该是一个 class 还是一个带有函数的文件?

目前:

class HelperFuncs():

    @staticmethod
    def first_util():
        print("first")

同事提议,干脆:

def first_util():
    print("First")

你的同事是对的。 class 和一堆静态方法毫无意义。认为你总是需要一个 class 是从 Java 或 C# 中遗留下来的坏习惯,在 C# 中一切都需要一个 class。这在 Python.

中不是惯用语

Python 就像 C++。独立的方法不仅是允许的,而且通常是首选的。使用模块将相关方法组合在一起,而不是名义上的 class.

此外,您不需要单独的目录。

myproject/
└── src/
    ├── main.py
    └── utils.py