一.约束

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. HttpRequest 工具

    1.根据 url 和 encoding 获取当前url页面的 html 源代码 public static string GetHtml(string url, Encoding encoding) ...

  2. python 获取天气信息

    [说明]接口为聚合数据接口.API使用说明: 实现代码: import requests,json def main(): #参数 farmat=1 cityname = input("请输 ...

  3. Clash Credenz 2014 Wild Card Round题解

    A题 简单模拟. /************************************************************************* > File Name: ...

  4. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---策略模式之MiniDuckSimulator[转]

     1  2{<HeadFirst设计模式>之策略模式 }  3{ 本单元中的类为策略类           }  4{ 编译工具: Delphi7.0           }  5{ E- ...

  5. Spring的IoC容器(转)BeanFactory

    Spring的IoC容器 Spring读书笔记-----Spring的Bean之Bean的基本概念 加菲猫 Just have a little faith. Spring的IoC容器 (用户持久化类 ...

  6. python基础(输出、变量、常量、数据类型、流程控制)

    输出 print print("Hello World!") # python2 和 python3 的区别 # python2 # coding:utf-8 print 123 ...

  7. System V启动脚本启动的服务

    /etc/rc.d/init.d/目录下的内容如下:这些常用的服务器都是System v的服务,要控制System V 的服务,我们可以使用以下命令 #/etc/rc.d/init.d/script  ...

  8. NOIP模拟17.9.21

    NOIP模拟17.9.21 3 58 145 201 161.5 样例输出21.6 数据规模及约定对于40% 的数据,N <= 20对于60% 的数据,N <= 1000对于100% 的数 ...

  9. php pdo操作数据库的方法

    PDO 安装 你可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展. 1.在 Unix /linux系统上安装 PDO 在Unix上或Linux上你需要添加以下扩展: exten ...

  10. 【python之路13】python的深浅拷贝

    深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impor ...