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

__new__ 单例

时间:2017-08-26 19:40:39      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:pen   技术分享   instance   lap   实例   lag   new   close   false   

 

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__ 单例

标签:pen   技术分享   instance   lap   实例   lag   new   close   false   

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

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