一.约束

1.抛异常

 # # 项目经理写的
class Base:
# # 对子类进行了约束. 必须重写该方法
# # 以后上班了. 拿到公司代码之后. 发现了NotImplementedError 继承他, 直接重写他
def login(self):
raise NotImplementedError("你要重写一下longin这个方法. 否则报错!") # 抛异常
#
# # 自己写的
class Member(Base):
def login(self):
print('我是普通人登录') class BaWu(Base):
def login(self):
print('吧务登录') class Houtai(Base):
# def denglu(self): # 报错, 上层程序员写代码没有按照规范来 # NotImplementedError: 你要重写一下longin这个方法. 否则报错!
# print('后台登录') def login(self): # 正确版 # 把上面的denglu 改成 login 才是正确的不会报错
print('后台登录')

2.抽象类和抽象方法

 # 抽象方法不需要给出具体的方法体. 抽象方法内只写一个pass就可以了
# 在一个类中如果一个方法是抽象方法. 那么这个类一定是一个抽象类
# 抽象类中. 如果有抽象方法. 此时这个类不能创建对象
# 如果一个类中所有的方法都是抽象方法. 这个类可以被称为接口类 # 写一个抽象方法: 导入一个模块
from abc import ABCMeta,abstractmethod # 此时抽象类不能创建对象
class Animal(metaclass= ABCMeta): # 写完这个东西. 就是个抽象类 @abstractmethod
def chi(self):
pass # 抽象类中可以有正常的方法
def dong(self):
print('动物会动') # class cat(Animal): #此时猫里面也有一个抽象方法, 此时的猫是创建不了对象的
# pass class cat(Animal):
def chi(self): # 重写父类中的抽象方法
print('猫喜欢吃鱼') c =cat()
c.chi()
c.dong()

二.异常处理

try:
print(1/10)
f = open('哈哈哈哈',mode='r')
d = {[]:123}
except ZeroDivisionError:
print('除以0出错了')
except FileNotFoundError: # 处理完错误后就不往下走了
print('文件不存在的错误')
except Exception: # 兜底的 能处理所有错误
print('其他错误') else: # 当try中的代码不产生任何错误的时候. 会自动的执行else里的代码 基本没什么用 都直接写try里了
pass finally: # 最终. 不管出错还是不出错. 都要执行最后的finally 一般用来收尾 以后数据连接还有各种连接用来断开连接用
print('哈哈哈哈哈')
如何自己定义异常
随便写一个类. 这个类只要继承了Exception 这个类就是一个异常类就可以作为raise对象
 class CulException(Exception):
pass # 如何手动抛出异常
def cul(a,b):
# 只能是数字相加
if (type(a) == int or type(a) == float) and (type(b) == int or type(b) == float):
return a + b else:
# 抛出异常
# raise 异常类(错误信息)
raise CulException('我没有办法给你处理这样的运算') print(cul('就是不放',2))

三.MD5

 import hashlib

 # md5对象

 obj = hashlib.md5(b'qweqws')  # 加盐
obj.update(''.encode('utf-8')) # 把要加密的内容给Md5
print(obj.hexdigest()) # 拿到密文 d2a43a16b3a92a620c4a769ed2d7b45c

四.日志处理

(1)单个日志

 import logging

 #
# 配置好日志的处理, 默认就是GBK
logging.basicConfig(filename='x1.txt', # 把日志信息写入的文件名
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', # 时间的格式
level=10) # 当前配置表示 10以上的分数会被写入日件 # 向日志文件写内容
logging.critical('今天嫂子没有来') # 50, 几乎是最高的 level = 50
logging.error('昨天嫂子来了') # 40 平时使用最多的就是他
logging.warning('还好吧') # 30 警告
logging.info('提示') # 20 提示
logging.debug('开发的时候把这个开着') #
logging.log(999, '宝宝今天又懵逼了') # 999 是自定义的等级 后面的是内容

(2)多个日志

 import logging

 # 创建一个操作日志的对象logger(依赖FileHandler)
file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') # 创建文件
file_handler.setFormatter(logging.Formatter(
fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) # 设置日志文件的格式
logger1 = logging.Logger('腾讯qq', level=10) # 创建一个日志文件处理对象
logger1.addHandler(file_handler) logger1.error("麻花藤明天请大家吃饭. 去不去?") # # 再创建⼀个操作⽇志的对象logger(依赖FileHandler)
# file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8')
# file_handler2.setFormatter(logging.Formatter(
# fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
# logger2 = logging.Logger('百度贴吧', level=logging.DEBUG)
# logger2.addHandler(file_handler2)
#
# logger2.error("我才不去呢. 我们在北京. 离你那么远")
 

python 约束. 异常处理. MD5. 日志处理的更多相关文章

  1. 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理

    一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...

  2. python之路--类的约束, 异常处理, MD5, 日志处理

    一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...

  3. python 面向对象(五)约束 异常处理 MD5 日志处理

    ###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...

  4. python --- 20 约束 异常处理 MD5 日志

    一.类的约束 1.抛出异常    NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...

  5. 20 约束 异常处理 MD5 日志

    三十九, 一.类的约束 1.抛出异常    NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完 ...

  6. python约束 异常 MD5 日志处理

    一.约束 1.用父类执行约束 子类继承父类,用重写方法,对子类的方法进行约束. class Foo: def login(self): # 对子类进行约束,该方法需要重写 # 没有执行的错误 rais ...

  7. python--类的约束, 异常处理, MD5, 日志处理

    一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...

  8. python--类的约束,异常处理,MD5加密,日志处理logging模块

    1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...

  9. Python面向对象(约束,异常处理,md5加密)(五)

    1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError class Base: def login(self): raise NotImplemen ...

随机推荐

  1. Yii 网站上线不需手动配置

    参考: http://www.cnblogs.com/x3d/p/php_auto_prepend_file.html

  2. Python子进程 (subprocess包)

    Python子进程 (subprocess包) subprocess以及常用的封装函数 当我们运行python的时候,我们都是在创建并运行一个进程.正如我们在Linux进程基础中介绍的那样,一个进程可 ...

  3. win7使用经验-调整cmd窗口大小

    分享一个调整cmd窗口的方法: 1.右击标题栏空白处,选择属性 2.选择布局栏 3.修改屏幕缓冲区大小的宽度和高度(自定义) 4.确定 注意:这里的缓冲区大小是指用户可拖动缩放的范围,并不是cmd窗口 ...

  4. 使用tomcat部署多个站点,访问时当然不能带上下文路径咯

    参考 http://blog.sina.com.cn/s/blog_6341fc0f0100lzaj.html tomcat的server.xml文件(比如C:\Program Files\Apach ...

  5. 实用Jupyter Notebook扩展工具——提升你的工作效率

    Jupyter Notebook 现已成为数据分析,机器学习的必备工具.因为它可以让数据分析师集中精力向用户解释整个分析过程.通过安装一些扩展工具,可以让你在Jupyter Notebook上的工作效 ...

  6. day18 15.自定义连接池

    我们写的是连接池吗?Connection对象绝对不能关.现在写的玩意不是连接池.因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准.标准,你那不是标准.既然是标准,你做连接 ...

  7. web前端学习(四)JavaScript学习笔记部分(5)-- 事件流详解

    1.JS事件详解-事件流 1.1.事件流 1.事件流: 描述的是在页面中接受事件的顺序 2.事件冒泡: 由最具体的元素接收,然后逐级上传播至最不具体的节点(文档) 3.事件捕获: 最不具体的节点先接收 ...

  8. web前端学习(二)html学习笔记部分(2)-- 改良的元素(input元素等等)

    1.2.5  HTML5 改良的 input 元素的种类 1.2.5.1  新增的input元素种类中的改良与增加 input 元素的种类 (1) 新增的input元素种类中的url类型.email类 ...

  9. 移动端h5禁用浏览器左滑右滑的前进后退功能

    在项目运行过程中发现,用户在有左右滑动前进后退的功能的浏览器上签字时,偶然触发了前进后退会导致canvas像是重置了一样内容消失,所以需要在代码中处理这种情况. 基本原理就是在touchmove事件中 ...

  10. 2-2 Numpy-矩阵

    # !usr/bin/env python # Author:@vilicute import numpy as np # 矩阵的创建 matr1 = np.mat("4 2 3;4 5 6 ...