py06_10:class之__new__内置方法

 

 工作原理:

1. 分配内存空间

2. 返回内存地址

重写__new__方法

 

class Test(object):
    def __new__(cls, *args, **kwargs):
        # 1. 创建对象时,new方法会自动调用
        print('创建对象,分配内存空间')
        # 2. 为对象分配空间
        result = super().__new__(cls)   # 因为父类new方法是一个静态方法,所以重写时,要重新把cls传参给父类 
        # 3. 返回结果
        return  result

    def __init__(self, name):
        self.name = name


# 创建对象验证
t = Test('yeyu')
上图代码

 单实例案例

 

 

class MusicPlayer(object):
    instance = None

    def __new__(cls, *args, **kwargs):
        # 判断内存地址为空,就创建。
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        return cls.instance


m1 = MusicPlayer()
m2 = MusicPlayer()

print(m1)
print(m2)
上图代码

 单实例实现一次初始化

 

posted on 2020-03-25 17:20  yeyu1314  阅读(149)  评论(0)    收藏  举报