我有一个充满静态方法的Python类。在类而不是原始函数中打包这些函数的优缺点是什么?
发布于 2009-01-18 22:12:04
一个也没有。这就是模块的用途:对相关函数进行分组。使用一个充满静态方法的类会让我对Javaitis感到畏缩。只有当函数是类的一个组成部分时,我才会使用静态函数。(实际上,无论如何我都可能想使用类方法。)
发布于 2009-01-18 22:17:47
不是的。最好是让它们成为函数,如果它们是相关的,就把它们放在自己的模块中。例如,如果您有一个如下所示的类:
class Something(object):
@staticmethod
def foo(x):
return x + 5
@staticmethod
def bar(x, y):
return y + 5 * x
那么最好有一个像这样的模块,
# something.py
def foo(x):
return x + 5
def bar(x, y):
return y + 5 * x
这样,您就可以通过以下方式使用它们:
import something
print something.foo(10)
print something.bar(12, 14)
不要害怕名称空间。;-)
发布于 2009-01-19 00:16:33
如果您的函数相互依赖或全局状态,请同时考虑第三种方法:
class Something(object):
def foo(self, x):
return x + 5
def bar(self, x, y):
return y + 5 * self.foo(x)
something = Something()
使用此解决方案,您可以单独测试一个函数,因为您可以重写另一个函数的行为或使用构造函数注入依赖项。
https://stackoverflow.com/questions/456001
复制相似问题