zoukankan      html  css  js  c++  java
  • day26 面向对象 单例模式总结

    如果是在python2中,就需要手动继承object,

     基于__new__方法

    
            基于__new__方法
            class Foo(object):
                def __new__(cls,*args,**kwargs):
                    if not hasattr(cls,'_instance'):
                        cls._instance=super(Foo,cls).__new__(cls,*args,**kwargs)
                    return cls._instance     
     基于装饰器方法
    def foo(cls,*args,**kwargs):
                dic={}
                def _foo():
                    if cls not in dic:
                        dic[cls]=cls(*args,**kwargs)
                    return dic[cls]
                return _foo
                
            @foo
            class MyClass(object):
                x=2
                def __init__(self,x=1)
                    self.x=x
    基于元类metaclass实现
    class Singleton(type):
                def __init__(cls,*args,**kwargs):
                    super(Singleton,cls).__init__(name,bases,dict)
                    cls._instance=None
                def __call__(cls,*args,**kwargs):
                    if cls._instance is None:
                        cls._instance=super(Singleton,cls).__call__(*args,**kwargs)
                    return cls._instance
            
        # 在python2中:
    class MyClass(object): __metaclass__=Singleton
        
        # 在python3中
        class Myclass(metaclass=Singleton):
          pass

    知识点总结,封装,静态变量变成私有变量

  • 相关阅读:
    wifi应用领域
    wifi主要功能
    Wi-Fi技术原理
    自适应通信类型与基本原理
    自适应通信发展背景
    自适应通信
    无线通信技术
    无线通信的一些专业术语
    无线通信
    Bluetooth vs. Wi-Fi(IEEE 802.11)
  • 原文地址:https://www.cnblogs.com/2012-dream/p/7881750.html
Copyright © 2011-2022 走看看