我有一个充满静态方法的Python类.将这些包装在一个类而不是原始函数中有哪些优点和缺点?
没有了.这就是模块的用途:对相关功能进行分组.使用一个充满静态方法的类让我对Javaitis感到畏缩.我唯一一次使用静态函数是函数是类的一个组成部分.(事实上,我可能想要使用类方法.)
不.最好让它们成为功能,如果它们相关,则将它们放入自己的模块中.例如,如果您有这样的类:
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)
不要害怕命名空间. ;-)
如果您的功能依赖于彼此或全局状态,请考虑第三种方法:
class Something(object): def foo(self, x): return x + 5 def bar(self, x, y): return y + 5 * self.foo(x) something = Something()
使用此解决方案,您可以单独测试函数,因为您可以使用构造函数覆盖另一个函数的行为或注入依赖项.