本文实例讲述了Python使用metaclass实现Singleton模式的方法。分享给大家供大家参考。具体实现方法如下:
class Singleton(type):
def __call__(cls, *args, **kwargs):
print "Singleton call"
if not hasattr(cls, 'instance'):
cls.instance = super(Singleton, cls).__call__(*args, **kwargs)
return cls.instance
def __new__(cls, name, bases, dct):
print "Singleton new"
return type.__new__(cls, name, bases, dct)
def __init__(cls, name, bases, dct):
print "Singleton init"
super(Singleton, cls).__init__(name, bases, dct)
class Cache(object):
__metaclass__ = Singleton
def __new__(cls, *args, **kwargs):
print "Cache new"
return object.__new__(cls, *args, **kwargs)
def __init__(cls, *args, **kwargs):
print "Cache init"
def __call__(cls, *args, **kwargs):
print "Cache call"
print Cache()
print Cache()
输出:
Singleton new Singleton init Singleton call Cache new Cache init <__main__.Cache object at 0x01CDB130> Singleton call <__main__.Cache object at 0x01CDB130>
希望本文所述对大家的Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#cainiaojc.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。