Python: 单独的实用程序文件还是使用静态方法?
Python: separate utilities file or use static methods?
在 python 我有 getter 和 setter,并计算实用程序。 getter return 属性,setter 设置 属性 和计算实用程序是使用参数计算内容的函数。例如
obj.property = calculate_property(arguments)
但是,有多种实现方式calculate_property
,它可以
- 成为 class
calculate_property(self)
和 return _property
的一部分
- 它可以是一个独立的函数,可以移到一个单独的文件中
- 可以是静态方法
我对 1) 的问题是 calculate_property 的参数可能会被隐藏,因为它们可能包含在对象本身中,并且不可能在对象外部使用该函数。在 2 和 3 中都保留了 calculate
的函数形式,但命名空间不同。
因此我排除了 1) 的可能性。
II如果我选择 2),优点是我可以将所有实用程序拆分成小文件,例如utilities_a.py、utilities_b.py 并将它们作为模块导入。
如果我选择 3),函数将保留在同一个文件中,使文件整体更长,但函数封装得更好。
2) 和 3) 哪个更好?还是我缺少其他解决方案?
您可以通过此示例实现 2
和 3
,将静态方法添加到在单独文件中定义的 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 方法执行此操作的。似乎也适用于静态方法。
在 python 我有 getter 和 setter,并计算实用程序。 getter return 属性,setter 设置 属性 和计算实用程序是使用参数计算内容的函数。例如
obj.property = calculate_property(arguments)
但是,有多种实现方式calculate_property
,它可以
- 成为 class
calculate_property(self)
和 return_property
的一部分
- 它可以是一个独立的函数,可以移到一个单独的文件中
- 可以是静态方法
我对 1) 的问题是 calculate_property 的参数可能会被隐藏,因为它们可能包含在对象本身中,并且不可能在对象外部使用该函数。在 2 和 3 中都保留了 calculate
的函数形式,但命名空间不同。
因此我排除了 1) 的可能性。
II如果我选择 2),优点是我可以将所有实用程序拆分成小文件,例如utilities_a.py、utilities_b.py 并将它们作为模块导入。
如果我选择 3),函数将保留在同一个文件中,使文件整体更长,但函数封装得更好。
2) 和 3) 哪个更好?还是我缺少其他解决方案?
您可以通过此示例实现 2
和 3
,将静态方法添加到在单独文件中定义的 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 方法执行此操作的。似乎也适用于静态方法。