zoukankan      html  css  js  c++  java
  • 基础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>

  • 相关阅读:
    xp_cmdshell
    常用SQL语句
    SQL Server Select的递归查询-交叉表
    Sql Server 2005 行转列的实现(横排)
    sql导入导出
    使用正则表达式验证手机号、车牌号
    页面功能:设为首页和加入收藏
    两个文本框同步输入
    最常用的200个JS代码
    .NET 获取时间
  • 原文地址:https://www.cnblogs.com/joycezhou/p/11396926.html
Copyright © 2011-2022 走看看