单例模式:保证某个类中只应该有一个实例。
这里我们将使用Python Cookbook的代码
方法一,继承Singleton
类:
class Singleton(object):
"""一个Python风格的单例模式"""
def __new__(cls, *args, **kwargs):
if not hasattr(cls,'_inst'):
cls._inst = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._inst
if __name__ == '__main__':
class SingleSpam(Singleton):
def __init__(self, s):
self.s = s
def __str__(self):
return self.s
s1 = SingleSpam('spam')
s2 = SingleSpam('eggs')
print id(s1), s1
print id(s2), s2
通过__new__