zoukankan      html  css  js  c++  java
  • python之单例模式的实现和区别?

    __new__实现单例:

    class Foo(object):

      def __init__(self,name):

        self.name=name

      def __new__(cls,*args,**kwargs):

        if not hasattr(cls,instance): #对象不存在instance属性

          cls.instance=super().__new__(cls,*args,**kwargs)

        return cls.instance #创建了一个实例,还没初始化对象

    f=Foo('hello')

    f1=Foo('hi')

    f.name=hello f1.name=hi

    id(f)==id(f1)

    地址没变 属性变了

    使用装饰器实现的单例:

    class Demo(cls,*ags,**kwargs):

      instance={}

      def foo(*args,**kwargs):

        if cls not in instance:

          instance[cls]=cls(*args,**kwargs)#具体的实例(已经初始化好的实例对象)

        return instance[cls]

        return foo

    @Demo

    class School(object):

      def __init__(self,name)

      self.name=name

    s=School('hafo')

    s1=School('qinghua')

    s.name=hafo s1.name=hafo s1==s

    地址没变,属性也没变

     

  • 相关阅读:
    网络IO
    进程与线程
    计算机网络
    操作系统
    刷题笔记
    fasd
    线程池
    epoll反应堆
    read函数
    dup与dup2
  • 原文地址:https://www.cnblogs.com/shijia-listen/p/10540571.html
Copyright © 2011-2022 走看看