本节内容

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 10in <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】:异常处理-断言(七)的更多相关文章

  1. python面向对象07/异常处理

    python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...

  2. python语言(七)面向对象、异常处理

    一.异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常).程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关).如果捕捉成功则进入另外一个处理分 ...

  3. python基础——18(面向对象2+异常处理)

    一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...

  4. Python(六)面向对象、异常处理、反射、单例模式

    本章内容: 创建类和对象 面向对象三大特性(封装.继承.多态) 类的成员(字段.方法.属性) 类成员的修饰符(公有.私有) 类的特殊成员 isinstance(obj, cls) & issu ...

  5. python学习笔记-(十一)面向对象进阶&异常处理

    上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...

  6. 面向对象的异常处理之深入理解java异常处理机制

    什么是异常? 异常是对问题的描述,将问题的对象进行封装: 异常体系的特点:异常体系中的所有类以及建立的对象: 都具有可抛性,也就是说可以被throw和throws关键字所操作,只有异常体系具有该特点: ...

  7. Python-Day7 面向对象进阶/异常处理/Socket

    一.面向对象高级语法部分 1.静态方法     通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里 ...

  8. day08(异常处理,创建异常,finally,throws和throw的区别)

    异常处理, 异常的产生  运行时异常:程序运行中产生的异常:RuntimeException类.   编译时异常:程序在编译时产生的异常:除了RuntimeException类  其他都是编译时产生的 ...

  9. Python 中的面向对象和异常处理

    在之前我们已经说过了 Python 中内置的主要的几种对象类型,(数,字符串,列表,元组和字典).而面向对象的核心人物还没出场呢 .那么我们常说的对象是什么类型的呢,其实他的类型就是“类”.继承封装和 ...

随机推荐

  1. IntelliJ IDEA通过Tomcat启动项目过程分析

    Tomcat部署项目的多种方式 Tomcat安装目录:${TOMCAT_HOME} 1.常规的webapps下直接部署到${TOMCAT_HOME}/webapps下 2.利用控制台进行部署 3.外部 ...

  2. Spring注解与Java元注解小结

    注解 Annotation 基于注解的开发,使得代码简洁,可读性高,简化的配置的同时也提高了开发的效率,尤其是SpringBoot的兴起,随着起步依赖和自动配置的完善,更是将基于注解的开发推到了新的高 ...

  3. BZOJ2038[2009国家集训队]小Z的袜子(hose)——莫队

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号 ...

  4. B - I Hate It HDU - 1754 线段树区间最大值板子(单点更新,区间最大)

    第一次打 改了半天  各种小错误 难受 #include<cstdio> #include<iostream> using namespace std; +; int a[ma ...

  5. 大学jsp实验6session

    1.session对象的使用 (1)设计一个简单的在线问卷调查程序,共有3个页面,分别是one.jsp.two.jsp.three.jsp. 其中,shiyan6_1_one.jsp页面效果如下图所示 ...

  6. Codeforces300 F. A Heap of Heaps

    Codeforces题号:#300F 出处: Codeforces 主要算法:树状数组/线段树 难度:4.6 思路分析: 在没看到数据范围之前真是喜出望外,直到发现O(n^2)会被卡…… 其实也不是特 ...

  7. 【bfs】迷宫问题

    [题目描述] 定义一个二维数组: int maze[5][5] = { 0,1,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,1,0, }; 它表示一个迷 ...

  8. CodeForces - 589D(暴力+模拟)

    题目链接:http://codeforces.com/problemset/problem/589/D 题目大意:给出n个人行走的开始时刻,开始时间和结束时间,求每个人分别能跟多少人相遇打招呼(每两人 ...

  9. 【UR #3】链式反应

    http://uoj.ac/problem/50 %炮姐 好博客 树形结构 枚举根节点的儿子是哪两个 然后列出方程: 然后有EGF的影子! 倍增? 泰勒展开可以把未知数从函数里拿出来!并且变成1次项, ...

  10. 【CH6901】骑士放置

    题目大意:给定一个 N*M 的棋盘,有一些格子禁止放棋子.问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的"骑士",类似于中国象棋的"马",按照" ...