python 约束. 异常处理. MD5. 日志处理
一.约束
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. 日志处理的更多相关文章
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- python之路--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
- python 面向对象(五)约束 异常处理 MD5 日志处理
###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...
- python --- 20 约束 异常处理 MD5 日志
一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...
- 20 约束 异常处理 MD5 日志
三十九, 一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完 ...
- python约束 异常 MD5 日志处理
一.约束 1.用父类执行约束 子类继承父类,用重写方法,对子类的方法进行约束. class Foo: def login(self): # 对子类进行约束,该方法需要重写 # 没有执行的错误 rais ...
- python--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
- python--类的约束,异常处理,MD5加密,日志处理logging模块
1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...
- Python面向对象(约束,异常处理,md5加密)(五)
1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError class Base: def login(self): raise NotImplemen ...
随机推荐
- 【html、CSS、javascript-8】JavaScript作用域
JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话 一.JavaScript中无块级作用域 在Java或C#中存在块级作用域,即:大括 ...
- UVA11389 The Bus Driver Problem
题意:有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线.给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d*r.问如何分配路线才能使加班费最少. 贪心 ...
- 用js实现base64编码器
base-64作为常见的编码函数,在基本认证.摘要认证以及一些HTTP扩展中得到了大量应用.在前端领域,也常常把图片转换为base-64编码在网络中传输.本文将详细介绍base64的原理及用js实现b ...
- [转]js的键盘事件
类型 键盘事件用来描述键盘行为,主要有keydown.keypress.keyup三个事件 keydown 当用户按下键盘上的任意键时触发,如果按住不放的话,会重复触发该事件 <div id=& ...
- express route的写法
1. 首先是最基本的用法 app.get("/",function(req,res){ res.send("hello world"); }); 2. 加个路径 ...
- python twisted 的定时调用带参的函数
无参情况:lc = task.LoopingCall(fun)如果fun带有参数,可以使用functools.partial传递 (fun2 = partial(fun, param1,[...]) ...
- python基础(输出、变量、常量、数据类型、流程控制)
输出 print print("Hello World!") # python2 和 python3 的区别 # python2 # coding:utf-8 print 123 ...
- 【洛谷】 P1420 最长连号
题目描述 输入n个正整数,(1<=n<=10000),要求输出最长的连号的长度.(连号指从小到大连续自然数) 输入输出格式 输入格式: 第一行,一个数n; 第二行,n个正整数,之间用空格隔 ...
- Leetcode599.Minimum Index Sum of Two Lists
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅. 如果答案不止一个,则输出所有答 ...
- WPF 如何显示gif
最近碰到了要显示表情的需求,而表情刚好是gif的图片. 于是用了Image试了下,发现不行,只会显示第一帧,然后上网查了下资料,大致有这么几种方法,都可以实现. 第一种: 使用Winfrom里面的pi ...