一.约束

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. Python之常用文件操作

    Python之常用文件操作

  2. JavaScript中[]+[] 、[]+{}、{}+[]、{}+{}的结果分析

    看到这样一个问题:{} + [] 的结果是多少? 一脸懵逼.. 于是在chrome控制台运行 {} + [] 和用 console.log({} + []) 输出,发现结果不一样.. 于是,把各种可能 ...

  3. git学习记录——基础概念和文件的基本操作

    夸一下git git是当前世界上最先进的分布式版本控制系统 优势: 1.不必联网 2.Git极其强大的分支管理,把SVN等远远抛在了后面. 集中式的代表CVS和SVN 分布式的代表BitKeeper, ...

  4. Ubuntu下安装Libpcap

    Libpcap是 Unix/Linux 平台下的网络数据捕获函数包,百度百科是这么说的,唉,不管什么来头,只要帮我完成作业就行,安装过程记录如下: 还是那个套路,先在网上搜了一把,大概也就那样,被疯狂 ...

  5. [jnhs]教训之jsp页面无法用jstl取值的坑.真他妈的奇葩,实体类的属性名不能用大写

    结果页面永远都是空 调试发现,数据正常的塞进去了 问题解决: https://zhidao.baidu.com/question/570584436.html 实体类的属性名,首字母不能大写,改成小写 ...

  6. yield和return

    yield 是用于生成器.什么是生成器,你可以通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器.它不同于函数的使用方法是:函数使用return来进行返回值,每调用一 ...

  7. hdoj 1325 Is It A Tree? 【并查集】

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shengweisong/article/details/34099151 做了一上午,最终ac了 w ...

  8. SpringCloud-微服务的注册与发现Eureka

    一.SpringCloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  9. 2019.9.26 csp-s模拟测试52 反思总结

    刚刚写了一个小时的博客没了,浏览器自动刷新. 一!个!小!时! 鼠标键盘电脑哪个都不能摔,气死我了. 垃圾选手T1T2没思路,T3倒是想出来得比较早,靠T3撑着分数. 数据结构学傻选手,属实垃圾. T ...

  10. java-日期类

    一 显示系统时间 package cn.itcast.api.a.date; import java.text.DateFormat; import java.util.Date; public cl ...