Python_面向对象_单例模式

时间:2022-03-14 09:44:55
class A(object):
pass a1 = A()
a2 = A() print(a1 == a2)
print(id(a1))
print(id(a2))

结果:

 False
2325723198184
2325723198464

a1与a2的内存地址不同,a1与a2是不一样的.

 class A(object):

     def __init__(self):
self.y=10
self.x=44
x=10
y=12 class B(A): x=8
y=20 b=B()
print(b.y)
print(b.x)

结果:

 10
44

程序执行过程:

  先找def的值,然后找class中其他的,找不到再去父类中去找,知道后就停止向上级查找,输出结果.

单例模式:

 class Settings(object):
_instance = None def __new__(cls, *args, *kw):
if not cls._instance:
cls._instance = super(Settings, cls).__new__(cls, *agrs, **kw)
return cls._instance s1 = Settings()
s2 = Settings() print(s1 == s2)
print(id(s1))
print(id(s2))

结果:

 True
1705906981800
1705906981800

小彩蛋:

 print(1<2==2)
print(1 < 2 and 2 == 2)

结果:

 True
True

按照该官方文档解释,

”5== len(a)== len(b)“等价于”5== len(a) and len(a)==len(b)“

以此类推,得到上述结果.

Python_面向对象_单例模式的更多相关文章

  1. Python&lowbar;面向对象&lowbar;类2

    类的几个装饰器方法: @classmethod (类方法):使之无法访问实例变量 class Animal(object): def __init__(self, name): self.name = ...

  2. Python&lowbar;面向对象&lowbar;类1

    面向对象:减少重复代码,提高效率,比函数式编程更高效 类的创建: 实例属性又称:成员变量,成员属性(或者字段) 面向对象的三大特性: 一.封装 把客观事物封装为抽象的类,并对外只暴露一个可用接口 使用 ...

  3. python&lowbar;面向对象&lowbar;组合

    组合: 一个类的对象是另外一个类对象的属性 # 组合 # 一个类的对象是另一个类对象的属性 # 什么时候使用组合:当两个类之间的关系是 :什么有什么的关系 : 班级有学生 学生有班级 班级有课程 图书 ...

  4. 黑马程序员&lowbar;Java面向对象&lowbar;内部类

    6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...

  5. python&lowbar;面向对象进阶(7)

    第1章 面向对象特性—继承(补充) 1.1 接口类.抽象类介绍 1.2 接口类 1.3 接口类应用过程 1.3.1 第一版:完成多种支付方式接口 1.3.2 第二版: 归一化设计,统一支付方式 1.3 ...

  6. Python&lowbar;面向对象进阶

    isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isi ...

  7. 1&period;Python&lowbar;字符串&lowbar;常用办法总结

    明确:对字符串的操作方法都不会改变原来字符串的值. 1.去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip("xx") 去掉某个字符串 name. ...

  8. 09&lowbar;Java面向对象&lowbar;第9天(类、封装)&lowbar;讲义

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...

  9. C&num;基础&lowbar;单例模式

    控制某个类型的实例数量-唯一一个 class Program { static void Main(string[] args) { test t1 = test.GetInstance(); tes ...

随机推荐

  1. css学习(2)-- 常见的CSS属性和值

    1.CSS中修饰字体的属性 属    性 描    述 属  性  值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科的赋值是可以使用的,中间用 ...

  2. BOM浏览器对象

    BOM 浏览器对象 一.浏览器本身就自己有一些对象,不用创建就可以使用 window(当前浏览器窗体) 属性: status opener closed parent top 方法: alert(); ...

  3. &lbrack;书目20131114&rsqb;微软技术丛书•快速软件开发&lpar;珍藏版&rpar; Rapid Development Taming Wild Software Schedules By Steve McConnell

    本文摘自:http://shop.oreilly.com/product/9781556159008.do EFFICIENT DEVELOPMENT Chapter 1 Welcome to Rap ...

  4. Does not contain a valid host&semi;port authority解决方法

    ERRORorg.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.IllegalArgumentException: Does not c ...

  5. YII 小部件 yii小部件查看方法 小物件做的表单

    要使用小部件,可以先到总文件去找   framework/yiilite文件里面搜索“CAtiveForm” (如果觉得小部件的radio布局有点难看,可以在外面定义,具体可以在控制器里面定义) 如下 ...

  6. 数组去重&plus;indexOf&lpar;&rpar;应用

    说起数组去重大家都不陌生,去重也有好多种方法,这里介绍很好理解的两种. 第一种 首先说一下第一种的逻辑,就是先拿第一个去跟第二个比,再跟第三个比,再跟第四个比--只要发现有相等的,可以用splice( ...

  7. 经典案例之MouseJack

    引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...

  8. Android&lowbar;PullListView

    ListView 下拉刷新,上拉加载更多的原理: (1)主要是onScroll()方法和onTouchEvent()方法,先是onTouchEvent()的ACTION_DOWN,然后是 ACTION ...

  9. C&num;&period;NET常见问题&lpar;FAQ&rpar;-listView如何显示网格线

    把GridLines设置为True     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http:/ ...

  10. Rails -- 自动清除日志

    在开发模式中,开发环境日志会越来越大,所以需要设置自动清理,省内存. 在 config/initializers中新建一个文件 clear_blog.rb 编写如下代码 if Rails.env.de ...