Python: 单独的实用程序文件还是使用静态方法?

Python: separate utilities file or use static methods?

在 python 我有 getter 和 setter,并计算实用程序。 getter return 属性,setter 设置 属性 和计算实用程序是使用参数计算内容的函数。例如

obj.property = calculate_property(arguments)

但是,有多种实现方式calculate_property,它可以

  1. 成为 class calculate_property(self) 和 return _property
  2. 的一部分
  3. 它可以是一个独立的函数,可以移到一个单独的文件中
  4. 可以是静态方法

我对 1) 的问题是 calculate_property 的参数可能会被隐藏,因为它们可能包含在对象本身中,并且不可能在对象外部使用该函数。在 2 和 3 中都保留了 calculate 的函数形式,但命名空间不同。

因此我排除了 1) 的可能性。

II如果我选择 2),优点是我可以将所有实用程序拆分成小文件,例如utilities_a.py、utilities_b.py 并将它们作为模块导入。

如果我选择 3),函数将保留在同一个文件中,使文件整体更长,但函数封装得更好。

2) 和 3) 哪个更好?还是我缺少其他解决方案?

您可以通过此示例实现 23,将静态方法添加到在单独文件中定义的 class。

helper.py:

def square(self):
    self.x *= self.x

fitter.py:

class Fitter(object):
    def __init__(self, x: int):
        self.x = x
    from helper import square

if name == '__main__':
    f = Fitter(9)
    f.square()
    print(f.x)

输出:

81

改编自此 answer,这是针对 class 方法执行此操作的。似乎也适用于静态方法。