码迷,mamicode.com
首页 > 其他好文 > 详细

基础DAY10-单例

时间:2019-08-22 22:13:42      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:alt   引用   ide   def   没有   object   lap   空间   spl   

技术图片

 技术图片

 

技术图片
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>

 

基础DAY10-单例

标签:alt   引用   ide   def   没有   object   lap   空间   spl   

原文地址:https://www.cnblogs.com/joycezhou/p/11396926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!