类的约束,异常处理,MD5加密和日志处理
1. 类的约束
1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点)
class Base: def chi(self): raise NotImplemented ("回家抱孩子吧") class Base1(Base): def chi(self): print("晚上吃鲍鱼") class Base2(Base): def he(self): print("喝点牛奶好吗") def func(obj): obj.chi() b1 = Base1() b2 = Base2() func(b1) func(b2) #会报错,抛出一个异常,因为b2中没有chi方法
2. 抽象类和抽象方法
from abc import ABCMeta, abstractmethod
class Base(metaclass = ABCMeta):
@abstractmethod
def fangfa(self):
pass
2. 异常处理. try except raise
try:
代码
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
*else:
*当程序不出错,执行操作
finally:
不管出不出错, 都要执行
raise > 异常类 > ("信息")
如何自己定义异常
class 类(Exception):
pass
堆栈 (报错的内容)
import traceback
traceback.format_exc()
3. MD5加密
import hashlib
obj = hashlib.md5(b'盐')
obj.update(b"要加密的内容")
print(obj.hexdigest())
4. 日志处理 (不要记, 留一份, 侧重点在用)
等级: 写日志: logging.error ( 内容 ) ===>>> # 40 到达40级的,把需要添加的内容添加到日志中
critical: 50
error:40
warning:30
info:20
debug:10
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=30) # 当前配置表示 30以上的分数会被写入日件
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(s, level=10) # 创建一个日志文件处理对象, s是变量 logger1.addHandler(file_handler) # 把文件添加到日志 # 再创建⼀个操作⽇志的对象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(s, level=logging.DEBUG) #s 是一个变量 logger2.addHandler(file_handler2)