首页 > 其他 > 详细

__new__ 单例

时间:2017-08-26 19:15:20      阅读:214      评论:0      收藏:0      [点我收藏+]

 

a.实例化类

实例化一个类时
	1. 创建一个对象,调用__new__方法,如果没有会调用父类的__new__方法
	2. 调用__init__方法
	3. 返回对象的引用
技术分享
class Dog(object):
    def __init__(self):
        print("---init方法---")

    def __new__(cls, *args, **kwargs):
        print("---new方法---")

xtq = Dog()

#---------结果---------

    ---new方法---
View Code

b. 单例

技术分享
class Dog(object):

    _instance = None
    _init_flag = False

    def __new__(cls, *args , **kwargs): #cls指向Dog
        if cls._instance == None:
            cls._instance = object.__new__(cls)
            return cls._instance
        else:
            return cls._instance

    def __init__(self,name):
        if Dog._init_flag == False:
            self.name = name
            Dog._init_flag = True


a = Dog("旺财")
print(a.name)
b = Dog("啸天犬")
print(b.name)

#----------------结果-----------------
旺财
旺财
View Code

 

  

__new__ 单例

原文:http://www.cnblogs.com/oyoui/p/7435926.html

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