首页 > 其他 > 详细

py06_10:class之__new__内置方法

时间:2020-03-25 17:34:42      阅读:49      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 工作原理:

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)
上图代码

 单实例实现一次初始化

技术分享图片

 

py06_10:class之__new__内置方法

原文:https://www.cnblogs.com/yeyu1314/p/12566006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!