四、单例模式

来源:互联网 发布:盛势网络剧剧照 编辑:程序博客网 时间:2024/06/04 20:58

一些常用的方法放到了MyUtil类中,为了不造成创建多个MyUtil实例的情况,因此使用了单例模式
main.py

MyUtil(fileName=psettings.ROOT_DIR + os.sep + 'config' + os.sep + 'config.properties')

myutil.py

class MyUtil(object):    '''    单例,提供从配置文件获取信息,获取连接等基础方法    '''    fileName = ''    cp = None    __instance = None    cnxpool = None     def __new__(cls, *args, **kwd):        if MyUtil.__instance is None:            MyUtil.__instance = object.__new__(cls, *args, **kwd)        return MyUtil.__instance    def __init__(self, fileName=None):        if fileName is None:                raise  Exception('%s配置文件没有找到' % fileName)        MyUtil.fileName = fileName        MyUtil.cp = ConfigParser()        print '配置文件%s' % MyUtil.fileName        MyUtil.cp.read(fileName)        self.logger = logging.getLogger('myLogger.myutil.MyUtil')    @classmethod    def loadProperty(cls, section, key):        '''        从配置文件中获得key对应的值        @param section: 节点名称        @param key: 参数名        @return: 得到的结果string类型,如果没有取得值返回None        '''        if MyUtil.cp is None:            MyUtil.cp = ConfigParser()            if MyUtil.fileName is None:                raise  Exception('%s配置文件没有找到' % MyUtil.fileName)            MyUtil.cp.readfp(codecs.open(MyUtil.fileName, "r", "utf-8-sig"))        s = MyUtil.cp.sections()        try:            if s is not None and section in s:                value = MyUtil.cp.get(section, key)            else:                value = None        except Exception, e:#             print e            value = None#         print value         return value
原创粉丝点击