zoukankan      html  css  js  c++  java
  • 单例

    先来个demo:

    # ########### 单例类定义 ###########
    class Foo(object):
     
        __instance = None
     
        @staticmethod
        def singleton():
            if Foo.__instance:
                return Foo.__instance
            else:
                Foo.__instance = Foo()
                return Foo.__instance
     
    # ########### 获取实例 ###########
    obj = Foo.singleton()

    作用:单例模式用来保证内存中仅存在一个实例。项目中也经常用到,CMDB中就有。

    再来个:

    #!/usr/bin/env python
    #coding:utf-8
    from wsgiref.simple_server import make_server
    
    # ########### 单例类定义 ###########
    class DbHelper(object):
    
        __instance = None
    
        def __init__(self):
            self.hostname = '1.1.1.1'
            self.port = 3306
            self.password = 'pwd'
            self.username = 'root'
    
        @staticmethod
        def singleton():
            if DbHelper.__instance:
                return DbHelper.__instance
            else:
                DbHelper.__instance = DbHelper()
                return DbHelper.__instance
    
        def fetch(self):
            # 连接数据库
            # 拼接sql语句
            # 操作
            pass
    
        def create(self):
            # 连接数据库
            # 拼接sql语句
            # 操作
            pass
    
        def remove(self):
            # 连接数据库
            # 拼接sql语句
            # 操作
            pass
    
        def modify(self):
            # 连接数据库
            # 拼接sql语句
            # 操作
            pass
    
    
    class Handler(object):
    
        def index(self):
            obj =  DbHelper.singleton()
            print id(single)
            obj.create()
            return 'index'
    
        def news(self):
            return 'news'
    
    
    def RunServer(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        url = environ['PATH_INFO']
        temp = url.split('/')[1]
        obj = Handler()
        is_exist = hasattr(obj, temp)
        if is_exist:
            func = getattr(obj, temp)
            ret = func()
            return ret
        else:
            return '404 not found'
    
    if __name__ == '__main__':
        httpd = make_server('', 8001, RunServer)
        print "Serving HTTP on port 8001..."
        httpd.serve_forever()
    View Code

    isinstance(obj, cls)
    检查是否obj是否是类 cls 的对象

    issubclass(sub, super)
    检查sub类是否是 super 类的派生类

    这两个方法。

    class Foo(object):
        pass
     
    obj = Foo()
     
    isinstance(obj, Foo)
    
    ------------------------------------------
    
    class Foo(object):
        pass
     
    class Bar(Foo):
        pass
     
    issubclass(Bar, Foo)
  • 相关阅读:
    Js中的变量
    flash读取XML 背景自动适应大小
    Ajax.NET Professional
    JS事件大全
    (转)SharePoint社区工具包中文版发布!!
    .iOS APP Project or Mac APP Project编译错误提示: My Mac 64bit is not valid for Running the scheme
    NSAssert断言
    iphone手机appstore地区更改
    自定义UITableView Section 的title样式字体
    从项中复制值
  • 原文地址:https://www.cnblogs.com/shoug/p/5102036.html
Copyright © 2011-2022 走看看