使用Python类有什么好处吗?

Mat*_*Mat 16 python static-methods class

我有一个充满静态方法的Python类.将这些包装在一个类而不是原始函数中有哪些优点和缺点?

Ben*_*son 31

没有了.这就是模块的用途:对相关功能进行分组.使用一个充满静态方法的类让我对Javaitis感到畏缩.我唯一一次使用静态函数是函数是类的一个组成部分.(事实上​​,我可能想要使用类方法.)


Eva*_*ark 14

不.最好让它们成为功能,如果它们相关,则将它们放入自己的模块中.例如,如果您有这样的类:

class Something(object):

    @staticmethod
    def foo(x):
        return x + 5

    @staticmethod
    def bar(x, y):
        return y + 5 * x
Run Code Online (Sandbox Code Playgroud)

那么最好有一个像这样的模块,

# something.py

def foo(x):
    return x + 5

def bar(x, y):
    return y + 5 * x
Run Code Online (Sandbox Code Playgroud)

这样,您可以通过以下方式使用它们:

import something
print something.foo(10)
print something.bar(12, 14)
Run Code Online (Sandbox Code Playgroud)

不要害怕命名空间. ;-)


Ada*_*iel 5

如果您的功能依赖于彼此或全局状态,请考虑第三种方法:

class Something(object):
    def foo(self, x):
        return x + 5

    def bar(self, x, y):
        return y + 5 * self.foo(x)

something = Something()
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,您可以单独测试函数,因为您可以使用构造函数覆盖另一个函数的行为或注入依赖项.