python--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束
1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError

- class Base:
- # 对子类进行了约束. 必须重写该方法
- # 以后上班了. 拿到公司代码之后. 发现了notImplementedError 继承他 直接重写他
- def login(self):
- # 没有被实现错误
- raise NotImplementedError("你要重写一下login这个方法. 否则报错!") # 抛异常 .
- class Member(Base):
- def login(self):
- print("我是普通人登录")
- class BaWu(Base):
- def login(self):
- print("吧务登录")
- class Houtai(Base):
- def denglu(self): # 报错, 上层程序员写代码没有按照规范来 需要改成login
- print("后台登录")
- # 整合这些个功能
- def deng(obj):
- obj.login()
- m = Member()
- bw = BaWu()
- ht = Houtai()
- deng(m)
- deng(bw)
- deng(ht)

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("猫喜欢吃鱼")
- a = Cat()
- a.chi()
- a.dong()

二 . 异常处理
- 1. 异常处理. try except raise
try:
代码
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
else:
当程序不出错
finally:
不管出不出错, 都要执行

- try:
- print(1/10)
- # f = open("哈哈哈哈哈", mode="r")
- # d = {[]:123}
- except ZeroDivisionError: # 可以处理所有错误
- print("除以0出错了")
- except FileNotFoundError:
- print("文件不存在的错误")
- except Exception: # 兜底的
- print("其他错误")
- else: # 当try中的代码不产生任何错误的时候. 会自动的执行else里的代码
- pass
- finally: # 最终. 不管出错还是不出错. 都要执行最后的finally 一般用来收尾
- print("哈哈哈哈哈哈哈哈啊哈")

- 2. raise 异常类("信息")
- 如何自己定义异常
class 类(Exception):
pass

- # 如何自己定义异常
- # 随便写一个类. 这个类只要继承了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))

3. 堆栈

- import traceback # 用来查看堆栈信息
- class GenderException(Exception):
- pass
- class Person:
- def __init__(self, name, gender):
- self.name = name
- self.gender = gender
- def xizao(self):
- print(f"{self.name}在洗澡")
- def nan_zao_tang_zi(ren):
- if ren.gender == "男":
- ren.xizao()
- else:
- raise GenderException("性别不对. 去对门看看") # 抛异常是很重要的
- try:
- p1 = Person("张三", "不知道")
- p2 = Person("李四", "男")
- nan_zao_tang_zi(p1)
- nan_zao_tang_zi(p2)
- except GenderException:
- # ret = traceback.format_exc() # 查看堆栈信息, 看错误的
- # print(ret)
- print("出错了. 很可惜")

三 . MD5

- import hashlib
- def my_md5(s):
- obj = hashlib.md5(b"ghjhgfl") # 加盐 里面的字母随便给
- obj.update(s.encode("utf-8")) # 把要加密的内容给md5
- return obj.hexdigest()
- print(my_md5("我是吴彦祖")) # afd1938a01d0c5894d0781fb335249a3

四 . 日志处理
等级:
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=40) # 当前配置表示 10以上的分数会被写入日件
- # 向日志文件写入内容
- logging.critical("我是赌神,我是赌神") # 50, 几乎是最高的
- logging.error("我是周润发") # 40 平时使用最多的就是他
- logging.warn("气死我了") # 30 警告
- logging.warning("还好吧")
- logging.info("提示") # 20 级
- logging.debug("开发的时候把这个开着") # 10
- logging.log(999, "宝宝今天有懵逼了") # level = 999


- 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之路--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
- python 面向对象(五)约束 异常处理 MD5 日志处理
###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- python --- 20 约束 异常处理 MD5 日志
一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...
- 20 约束 异常处理 MD5 日志
三十九, 一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完 ...
- python 约束. 异常处理. MD5. 日志处理
一.约束 1.抛异常 # # 项目经理写的 class Base: # # 对子类进行了约束. 必须重写该方法 # # 以后上班了. 拿到公司代码之后. 发现了NotImplementedError ...
- python--类的约束,异常处理,MD5加密,日志处理logging模块
1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...
- Python面向对象(约束,异常处理,md5加密)(五)
1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError class Base: def login(self): raise NotImplemen ...
- python之约束, 异常处理, md5
1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点) 2. 抽象类和抽象方法 # 语法 # from abc import ABCMet ...
随机推荐
- 模拟ssh、黏包、hashlib模块(MD5)
待补充..... 一.模拟ssh 二.黏包 1.黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cm ...
- python库使用整理
1. 环境搭建 l Python安装包:www.python.org l Microsoft Visual C++ Compiler for Python l pip(get-pip.py):p ...
- morphia(2)-添加
1.简单 @Test public void add() throws Exception { final Employee em = new Employee("遥远2",500 ...
- SSH之小问题解惑
(注:以下版本指的是spring3+hibernate3+struts2) 1,web开发中,servlet对象是否线程安全? 当一个http请求到来时,web容器的调度线程(Dispach Thre ...
- oracle GROUP BY rollup
1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...
- localStorage 和 sessionStorage的区别
存储对象: 在主流浏览器中,添加了html5 Web Storage API 的接口,storage是一个存储对象,它包括会话存储(session storage)或本地存储(local stora ...
- 【持续更新】HTML5 基础知识
文档类型声明 <!DOCTYPE html> 必不可少,位于文件第一行. 字符编码 <meta charset="UTF-8"> 语义化标记元素 heade ...
- 【转】阐述Handler的实现原理
面试题:阐述Handler的实现原理 2016年07月18日 21:01:35 阅读数:7574 处理过程: 从handler中获取一个消息对象,把数据封装到消息对象中,通过handler的send… ...
- 设置umask
umask 002 例子:umask为003,建立的文件与目录权限是什么? umask为003,所有去掉的属性为-------wx,因此 文件 -rw-rw-r-- 目录 drwxrwxr--
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} 解决方法
Tomcat启动时出现红色警告内容 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'sour ...