面向对象【day08】:异常处理-断言(七)
本节内容
1、概述
2、知识点回顾
3、断言
一、概述
python中断言,这个我是第一次听说到的,断言有什么用呢?断言就是做一些程序的检查工作,就是在执行之前需要做的一些检查,比如类似于安检一样,合格的就能过,不合格的就不能过。也类似于银行转账工作,真正的转账之前是不是要检查用户各方面,是不是账号密码是不是都没有问题,转的钱必须没有问题,所以你在这个操作之前做一下检查。
二、知识点回顾
1、__new__方法:
先于__init__方法之前执行
2、__call__方法:
实例化之后加括号,去执行__call__方法
3、__metaclass__:
用来定义这个类是以怎样的形式被创建的
4、异常处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
try : .... except (ValueError,KeyError),e # in 2.7写法 except (ValueError,KeyError) as e # in3.X写法 except Exception as e :放在异常最后,上面抓不到的异常全走这个 else : #没有异常发生时,执行 finally ,无论如何都执行 raise ValueError : 抛出异常 |
5、断言:
下面单独讲
6、socket:
协议:tcp/ip send,recv
udp
地址簇(family address):
AF.INET ipv4
AF.INET6 ipv6
AF.UNIX local
协议类型(socket type protocol):
socket.SOCK_STREAM tcp/ip
socket.SOCK_DGRAM 数据格式socket,for UDP
服务端:
1
2
3
4
5
6
7
8
9
10
11
12
|
server = socket.socket(AF.INET,sock.SOCK_STREAM) server.bind((localhost, 6969 )) server.listen() conn,addr = server.accept() #每当和客户端建立一个连接,就会生成一个实例,这个实例的值赋给conn,这边会产生阻塞 while True : print ( "new conn" ,addr) data = conn.recv( 1024 ) #官方推荐是8192,相当于8k if not data: break #客户端一断开,conn.recv收到的就都是空数据,就会进入死循环 print (data) conn.send(data.upper()) |
客户端:
1
2
3
4
5
|
client = socket.socket() clent.connect((serverip, 6969 )) client.send(data) client.send(data) #这边可以发送多次 data = client.recv( 1024 ) |
三、断言
作用:断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。
3.1、断言关键字assert
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class C( object ): def __init__( self ): self .name = "zhangqigao" c_obj = C() assert c_obj.name = = "zhangqigao" #断言 print ( "没有错误继续..." ) #输出 没有错误继续... |
3.2、断言出错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class C( object ): def __init__( self ): self .name = "zhangqigao" c_obj = C() assert c_obj.name = = "gaogao" #断言出字符串不匹配 print ( "没有错误继续..." ) #输出 Traceback (most recent call last): File "E:/PycharmProjects/pytest/day7/断言.py" , line 10 , in <module> assert c_obj.name = = "gaogao" AssertionError #报断言异常错误 |
当然我们用我们之前的知识也是可以解决上面的问题,代码如下:
1
2
3
4
5
6
7
8
9
10
11
|
class C( object ): def __init__( self ): self .name = "zhangqigao" c_obj = C() if c_obj.name = = "gaogao" : print ( "有错误...." ) else : print ( "没有错误继续..." ) |
但是这个不仅增加了代码量,而且感觉还是比较low,这个就相当于你开着五菱之光的车,和开着特斯拉的区别。
面向对象【day08】:异常处理-断言(七)的更多相关文章
- python面向对象07/异常处理
python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...
- python语言(七)面向对象、异常处理
一.异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常).程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关).如果捕捉成功则进入另外一个处理分 ...
- python基础——18(面向对象2+异常处理)
一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...
- Python(六)面向对象、异常处理、反射、单例模式
本章内容: 创建类和对象 面向对象三大特性(封装.继承.多态) 类的成员(字段.方法.属性) 类成员的修饰符(公有.私有) 类的特殊成员 isinstance(obj, cls) & issu ...
- python学习笔记-(十一)面向对象进阶&异常处理
上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...
- 面向对象的异常处理之深入理解java异常处理机制
什么是异常? 异常是对问题的描述,将问题的对象进行封装: 异常体系的特点:异常体系中的所有类以及建立的对象: 都具有可抛性,也就是说可以被throw和throws关键字所操作,只有异常体系具有该特点: ...
- Python-Day7 面向对象进阶/异常处理/Socket
一.面向对象高级语法部分 1.静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里 ...
- day08(异常处理,创建异常,finally,throws和throw的区别)
异常处理, 异常的产生 运行时异常:程序运行中产生的异常:RuntimeException类. 编译时异常:程序在编译时产生的异常:除了RuntimeException类 其他都是编译时产生的 ...
- Python 中的面向对象和异常处理
在之前我们已经说过了 Python 中内置的主要的几种对象类型,(数,字符串,列表,元组和字典).而面向对象的核心人物还没出场呢 .那么我们常说的对象是什么类型的呢,其实他的类型就是“类”.继承封装和 ...
随机推荐
- BZOJ1565[NOI2009]植物大战僵尸——最大权闭合子图+拓扑排序
题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多 ...
- 清北澡堂 Day2 上午 一些比较重要的关于数论的知识整理
1.算数基本定理: 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>=1; 证: 存在性: 若存在最小 ...
- MySQL 同一台服务器同步数据
声明:我配置出来的slave_io_running和slave_sql_running都是yes.但是数据并没有同步! 希望有遇到相同问题的朋友,能够告诉我一下解决方案? 首先,如何在同一个服务器安装 ...
- 洛谷P2764 最小路径覆盖问题
有向无环图的最小路径点覆盖 最小路径覆盖就是给定一张DAG,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点. 有定理:顶点数-路径数=被覆盖的边数. 要理解的话可以从两个方向: 假设DAG已 ...
- 基于FPGA的UART协议实现(通过线性序列机)
//////////////////2018/10/15 更新源代码: 实现uart这东西其实早就写了,不过不太完善,对于一个完美主义者来说,必须解决掉它. 1.什么是UART? 通用异 ...
- 【XSY2730】Ball 多项式exp 多项式ln 多项式开根 常系数线性递推 DP
题目大意 一行有\(n\)个球,现在将这些球分成\(k\) 组,每组可以有一个球或相邻两个球.一个球只能在至多一个组中(可以不在任何组中).求对于\(1\leq k\leq m\)的所有\(k\)分别 ...
- 华为TaiShan 2280 ARM 服务器
华为TaiShan 2280 ARM 服务器 华为TaiShan 2280 ARM 服务器 https://e.huawei.com/cn/products/cloud-computing-dc/s ...
- 【CodeForces 730H】Delete Them
BUPT 2017 summer training (for 16) #1E 题意 找到匹配要删除的文件名们但不匹配其它文件名们的表达式.其中?匹配所有字符,其它字符匹配本身. 题解 如果某个位置出现 ...
- 【比赛】NOIP2018 货币系统
可以发现最后的集合一定是给定集合的子集 所以就变成了裸的背包嘛,对于每个数判断它能不能被其它数表示出来,如果可以,就表示这个数是没用的,可以去掉 #include<bits/stdc++.h&g ...
- BZOJ 5097: [Lydsy1711月赛]实时导航(最短路 + bitset)
题意 \(n\) 个点的有向图,边权 \(\in \{1, 2, 3, 4\}\) ,\(m\) 次修改边权/加边/删边,\(q\) 次询问:以 \(s_i\) 为起点,输出它到其他点的最短 ...