zoukankan      html  css  js  c++  java
  • 产生的对象的方式__new__与单例模式

    1.产生对象的原理      __new__ 方法

    class testclass:
        #类内部在new一个对象之前默认生成一个空的对象(内存空间),然后再调用__init__
        def __new__(cls, *args, **kwargs):   # 声明:python __new__ 为类中的静态方法
            return object.__new__(cls)   #通过object的new方法把本类作为参数去创建一个空对象
        def __init__(self,name):
    
            self.name = name
    
    obj = testclass('egon')
    print(obj.name)    #  egon

    2. 基于__new__的单例模式

    #  基于__new__的单例模式
    class sington:
        _instance = None
        def __new__(cls, *args, **kwargs):   # Python的实现机制 __new__ 为类中的静态方法
            if not cls._instance:            # 静态方方法
                cls._instance = object.__new__(cls)
                return  cls._instance
    
    obj1 = sington()
    obj2 = sington()
    # print(sington)   # <class '__main__.sington'>
    # print(sington.__class__)  #<class 'type'>
    # print(sington)   # <class '__main__.sington'>
    print(sington.__dict__)  # 打印类的名称空间
    
    print(obj1.__dict__)   # 打印对象的名称空间
    print(obj1.__class__)  # 打印对象的类
    print(obj1.__class__.__name__)  # 打印对象的类名
  • 相关阅读:
    45. 跳跃游戏 II
    BIO,AIO,NIO
    sqlyog连接阿里云mysql
    Hive的数据表HDFS的关系。
    云计算和虚拟机
    oracle入门笔记
    程序员开发协作管理工具
    IT行业的新思想来源
    docker所需的os基础
    docker源码和原理探究
  • 原文地址:https://www.cnblogs.com/bigbox/p/12023627.html
Copyright © 2011-2022 走看看