博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 单例模式
阅读量:5888 次
发布时间:2019-06-19

本文共 1639 字,大约阅读时间需要 5 分钟。

#单例模式class Dog(object):        #定义一个类变量        #None相当于c++中的NULL,修饰基本类型和类类型均可        instance = None        #重写__new__方法        def __new__(cls):                if None == cls.instance:                        #调用父类__new__方法创建对象                        cls.instance = object.__new__(cls)                        return cls.instance                else:                        return cls.instanced1 = Dog()print(id(d1))d2 = Dog()print(id(d2))#结果显示两个对象的地址相同
#单例模式--特殊赋值class Cat(object):        instance = None        #python要求__new__方法的参数必须和__init__方法的参数一致,虽然在__new__方法中只有cls这个形参有用        def __new__(cls,name):                if None == cls.instance:                        cls.instance = object.__new__(cls)                        return cls.instance                else:                        return cls.instance        def __init__(self,name):                self.name = namec1 = Cat("tom")print(id(c1))print(c1.name)#打印tomc2 = Cat("jack")print(id(c2))print(c2.name)#打印jack#这是因为__init__方法并没有做instance的判断,所以d2的调用相当于重新给name赋值了
#单例模式--完成版class Cat(object):        instance = None        initFlag = True        def __new__(cls,name):                if None == cls.instance:                        cls.instance = object.__new__(cls)                        return cls.instance                else:                        return cls.instance        def __init__(self,name):                #保证__init__只执行一次                #注意类变量的调用方式                if Cat.initFlag:                        self.name = name                        Cat.initFlag = Falsec1 = Cat("tom")print(id(c1))print(c1.name)#打印tomc2 = Cat("jack")print(id(c2))print(c2.name)#打印tom

 

转载地址:http://fugix.baihongyu.com/

你可能感兴趣的文章
NewSQL为何使传统关系数据库黯然失色?
查看>>
文件服务器 之 Debian下pureftpd的安装心得
查看>>
第一阶段项目总结
查看>>
Java集合详解
查看>>
myeclilpse打开文件所在位置的图标消失后的找回方法
查看>>
数据链路层
查看>>
FactoryMethod工厂方法模式(创建型模式)
查看>>
Java面向对象编程概述
查看>>
ios中NSObject分类(2)
查看>>
vi(vim)快速入门 常用指令
查看>>
我和python的初相识
查看>>
window linux 路径写法(转载)
查看>>
mysql 字符串字段中查找非ascii字符
查看>>
日常开发常用网站(持续更新……)
查看>>
7-8 哈利·波特的考试(25 分)(图的最短路径Floyd算法)
查看>>
《高老头》
查看>>
Javascript 弹出窗口总结(收集)
查看>>
ERP实施顾问,请找准自己的定位
查看>>
Android studio 3.1.2报错,no target device found
查看>>
Tarjan 割边(桥)
查看>>