• 基础DAY10-单例


     

    class MusicPlayer(object):
        # * 元组 ** 字典
        def __new__(cls, *args, **kwargs):
            # 使用类名创建对象,new方法会被自动调用
            print("创建对象,分配空间")
            # 2 为对象分配空间
            instrance = super().__new__(cls)
            # 3 返回对象的引用
            return instrance
    
        def __init__(self):
            print("播放器初始化")
    
    
    # 创建播放器对象
    
    
    player = MusicPlayer()
    
    print(player)
    __new__

    class MusicPlayer(object):
        # 定义一个类属性,初始值是None,用于记录单例对象的引用
        instance = None
        
        # * 元组 ** 字典
        def __new__(cls, *args, **kwargs):
            # 使用类名创建对象,new方法会被自动调用
            if cls.instance is None:
                cls.instance = super().__new__(cls)
            return cls.instance
    
        def __init__(self):
            print("播放器初始化")
    
    
    # 创建播放器对象
    player = MusicPlayer()
    print(player)
    player2 = MusicPlayer()
    print(player2)

    播放器初始化
    <__main__.MusicPlayer object at 0x00000000012F4780>
    播放器初始化
    <__main__.MusicPlayer object at 0x00000000012F4780>

    class MusicPlayer(object):
        # 定义一个类属性,初始值是None,用于记录单例对象的引用
        instance = None
        init_flag = False
        # * 元组 ** 字典
        def __new__(cls, *args, **kwargs):
            # 使用类名创建对象,new方法会被自动调用
            if cls.instance is None:
                cls.instance = super().__new__(cls)
            return cls.instance
    
        def __init__(self):
    
            # 1 判断是否执行过初始化动作
            if MusicPlayer.init_flag == False:
                # 2 如果没有执行过,在执行初始化动作
                print("播放器初始化")
                # 3 修改类属性的标记
                MusicPlayer.init_flag = True
            return
    
    # 创建播放器对象
    player = MusicPlayer()
    print(player)
    player2 = MusicPlayer()
    print(player2)
    初始化方法只执行一次

    播放器初始化
    <__main__.MusicPlayer object at 0x0000000000814748>
    <__main__.MusicPlayer object at 0x0000000000814748>

  • 相关阅读:
    Spring Boot 自定义starter
    jvm中的年轻代 老年代 持久代 gc
    nginx反向代理服务器端口问题
    ACE Editor在线代码编辑器简介及使用引导
    Linux下MySQL 5.6.24的编译安装与部署
    C3p0的参数
    Mysql 查看连接数,状态
    linux下mysql定时备份数据库
    Mysql中存储方式的区别
    mysql常用语句
  • 原文地址:https://www.cnblogs.com/joycezhou/p/11396926.html
Copyright © 2020-2023  润新知