Python,使用单例模式或仅全局变量

per*_*gee 8 python singleton global-variables

在python中,使用单例模式而不是使用全局变量更好吗?

class Singleton(type):
    def __call__(self, *args, **kwargs):
        if 'instance' not in self.__dict__:
            self.instance = super(Singleton, self).__call__(*args, **kwargs)
        return self.instance
Run Code Online (Sandbox Code Playgroud)

或只是创建一个全局变量:

SINGLETON_VARIABLE = None
def getSingleton():
    if SINGLETON is None:
        SINGLETON_VARIABLE = SOME_ININ_CLASS()
    return SINGLETON_VARIABLE
Run Code Online (Sandbox Code Playgroud)

制作单例模式是否需要使生活复杂化?先感谢您。

bco*_*nzo 5

全局变量方法的问题在于,您始终可以访问该变量并修改其内容,因此它将是Singleton模式的“较弱”形式。另外,如果您有多个Singleton类,则必须为每个类定义一个函数和一个全局变量,因此最终比模式更混乱。

  • 抱歉,您的回复很晚,我有点工作量大,没有多余的时间来。我认为,Singleton模式带来的最糟糕的情况是类定义中的额外复杂性,但这是您一次付钱然后获得收益的代价。您似乎已经把它钉牢了,所以我随它去吧。 (3认同)