프로 그래 밍 모드 공장 모드 단독 모드

공장 모드
'    '
class msg(object):

    def mail(self,msg):
        pass

    def sms(self,msg):
        pass

    def weixin(self,msg):
        pass


    def sender(self,msg,msg_type):
        if msg_type == 'sms':
            self.sms(msg)
        elif msg_type == 'mail':
            self.mail(msg)
            
            
            

import statsout 
def output(data, format="text"):                           
    output_function = getattr(statsout, "output_%s" %format) 
    return output_function(data)

단일 모드
    
  #!/usr/bin/python
# -*- coding: utf-8 -*-

__author__ = 'gaogd'

'''
    
'''
def singletion(cls):
    instances = {}

    def warpper(*args,**kwargs):
        if cls not in instances:
            instances[cls] = cls(*args,**kwargs)
        return  instances[cls]
    return  warpper

@singletion
class Myclass(object):

    def __init__(self,n):
        self.n = n


c = Myclass('10')
c2 = Myclass('20')

##       :   @singletion 《=》 Myclass = singletion(Myclass)

# print '--->',c.n ,c2.n




#  2,  __new__  
#               _instance ,
#  cls._instance None           ,     ,   
#  cls._instance  None,    cls._instance
class Singleton(object):
    def __new__(cls, *args, **kw):
        if not hasattr(cls, '_instance'):   ##  cls    _instance  ,     
            orig = super(Singleton, cls)     ##      
            cls._instance = orig.__new__(cls, *args, **kw) ##        _instance  
        return cls._instance  ##      

class MyClass1(Singleton):
    a = 1

one = MyClass1()
two = MyClass1()
two.a = 5
print one.a,two.a

### __new__()      __init__()   

좋은 웹페이지 즐겨찾기