Python,使用单例模式还是全局变量

12 投票
1 回答
7762 浏览
提问于 2025-04-18 18:04

在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

或者直接创建一个全局变量:

SINGLETON_VARIABLE = None
def getSingleton():
    if SINGLETON is None:
        SINGLETON_VARIABLE = SOME_ININ_CLASS()
    return SINGLETON_VARIABLE

为了实现单例模式,是否有必要让事情变得复杂呢?谢谢!

1 个回答

7

使用全局变量的方法有个问题,就是你总是可以访问这个变量并修改它的内容,这样就让它变得不那么安全,像是一个“弱版”的单例模式。而且,如果你有多个单例类的话,就得为每个类都定义一个函数和一个全局变量,这样一来,事情就会变得更加复杂和混乱。

撰写回答