zoukankan      html  css  js  c++  java
  • python 元类型编程, 单例模式SingleTon的一种实现方式

    原理:利用元类型,重新定义类实例化一个新对象的方法(__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>

    都是指向同一个地址,同一个实例。

  • 相关阅读:
    mysql创建表
    MySql数据类型(转)
    mysql命令总结
    php文件遍历类:FileBianli.class.php
    php文件删除
    php文件复制
    php文件遍历
    php下载c
    智能眼镜的行业应用
    《代谢增长论》读书笔记
  • 原文地址:https://www.cnblogs.com/ankier/p/2831532.html
Copyright © 2011-2022 走看看