您的位置:首页 > 编程语言 > Python开发

python 元类型编程, 单例模式SingleTon的一种实现方式

2012-12-24 20:41 781 查看
原理:利用元类型,重新定义类实例化一个新对象的方法(__call__)行为。让其只返回同一个实例。

#-*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name:        ģ��shell
# Purpose:     Ӧ�ó����main��ں���
#
# Author:      ankier
#
# Created:     26-10-2012
# Copyright:   (c) ankier 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

class SingleTonMeta(type):
## @summary: 类初始化一个新的对象时,call到的方法。
def __call__(cls, *args):
if not hasattr(cls, 'instance'):
cls.instance = super(SingleTonMeta, cls).__call__(*args)
#返回单实例
return cls.instance

class Cache(object):
__metaclass__ = SingleTonMeta

def main():
cache1 = Cache()# 将call SingleTonMeta.__call__
cache2 = Cache()# 将call SingleTonMeta.__call__
print cache1 == cache2

if __name__ == '__main__':
main()


运行效果:

True <__main__.Cache object at 0x00BB7B30> <__main__.Cache object at 0x00BB7B30>


都是指向同一个地址,同一个实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: