python约束 异常 MD5 日志处理
一.约束
1.用父类执行约束
子类继承父类,用重写方法,对子类的方法进行约束.
class Foo:
def login(self): # 对子类进行约束,该方法需要重写
# 没有执行的错误
raise NotImplementedError ("login重写") # 抛出 NotImplementedError错误 class Member(Foo):
def login(self):
print("我是普通登陆") class BaWu(Foo):
def login(self):
print("我是吧务登陆") class HouTai(Foo):
def denglu(self):
print("我是后台登陆") def fn(obj):
obj.login() m = Member()
bw = BaWu()
ht = HouTai() fn(m)
fn(bw)
fn(ht)
2.定义抽象类进行约束
抽象类中的抽象方法不能执行,报错约束
from abc import ABCMeta ,abstractmethod #导入抽象类模块 class Foo(metaclass=ABCMeta): # 定义一个抽象类 元类 @abstractmethod # 定义一个 抽象方法
def login(self):pass def back(self): # 抽象类中可以写正常方法
print("退出登陆") class Member(Foo):
def login(self):
print("我是普通登陆") class BaWu(Foo):
def login(self):
print("我是吧务登陆") class HouTai(Foo):
def denglu(self):
print("我是后台登陆") def fn(obj):
obj.login() m = Member()
bw = BaWu()
ht = HouTai() fn(m)
fn(bw)
fn(ht) m.back()
抽象类总结:
1.子类必须重写父类的方法,否则子类也是抽象类
2.抽象类不能创建对象
3.有抽象方法的类,就是抽象类
4.抽象类可以有方法
二.异常处理
1.处理异常错误
格式 try...except...
try: # 处理异常 try ... except...
print(1/0)
except ZeroDivisionError:
print("0不能做除数")
print("hah")
try:
print(1/0)
except Exception: # 可以处理所有错误,一般在最下面兜底用
print("我能拦截下面吗")
except ZeroDivisionError:
print("0不能做除数")
格式 try...except...except...else...finally
try:
# print(1/0)
f = open("dssadas",mode="r")
except ZeroDivisionError:
print("0不能做除数")
except FileNotFoundError:
print("找不到文件")
except Exception: # 可以处理所有错误,一般在最下面兜底用
print("我能兜底")
else: # 当try中的代码不产生任何错误的时候,会自动执行else里的代码
print("没有出错?") # 这里一般放pass
finally: # 最终,不管出错还是不出错,都要执行最后的finally
print("哈哈哈")
2.自定义异常
因为所有的异常类都继承Exception 所以写一个继承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 异常类(错误信息)
raise CulException("这是自己定义的异常类,抛出") print(cul("sdf",25))
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 man_zaotang(t):
if t.gender == "男":
t.xizao()
else:
raise GenderException("进错了") # 抛出异常很重要 try:
p = Person("小明","女")
man_zaotang(p)
except GenderException:
ret = traceback.format_exc() # 查看堆栈信息,看错误信息的
print(ret)
三.MD5加密
导入模块使用,不可逆的一种加密方式
import hashlib
def my_md5(s):
obj = hashlib.md5(b"dasds") # 加盐 防止被破解
obj.update(s.encode("utf-8")) # 给s字符串加密
return obj.hexdigest() # 获取密文 uname = input("用户名:")
upwd = input("密码:") if uname == "admin" and my_md5(upwd) == "f5cb18dbc8aae8b87c9129ff3156e0d5":
print("登陆成功") else:
print("帐号或者密码错误")
四.日志处理
日志一般不需要更改很多,只需要设置参数,有模板
1.单一日志模板
import logging
# 单一项目模块
logging.basicConfig(
filename="1.log", # 把日志信息写入的文件名
# 时间 等级名 模块名 写入信息
format="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s",
datefmt="%Y-%m-%d %H:%M:%S", #
level=40 # 设置等级 超过这个的都写入日志
)
# 向日志文件写入内容
logging.critical("我几乎是最高等级50")
logging.error("我是错误,等级40")
logging.warning("我是警告,等级30")
logging.info("我是提示,等级20")
logging.debug("我是debug,等级10")
logging.log(600,"写入内容")
2.多个日志模板
import logging file_handler = logging.FileHandler("2.log","a","utf-8") # 创建日志文件
file_handler.setFormatter(
logging.Formatter(
# 日志格式
fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) logger1 = logging.Logger("dnf",level=10) # 设置日志处理对象和等级
logger1.addHandler(file_handler) # 把文件添加到日志 logger1.error("看看错误") # 错误信息 file_handler2 = logging.FileHandler("3.log","a","utf-8")
file_handler2.setFormatter(
logging.Formatter(
fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"
)
) logger2 = logging.Logger("lol",level=logging.DEBUG)
logger2.addHandler(file_handler2) logger2.critical("????") # 哪里需要记录日志就放到哪里,要设置等级
python约束 异常 MD5 日志处理的更多相关文章
- python 约束. 异常处理. MD5. 日志处理
一.约束 1.抛异常 # # 项目经理写的 class Base: # # 对子类进行了约束. 必须重写该方法 # # 以后上班了. 拿到公司代码之后. 发现了NotImplementedError ...
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- python 面向对象(五)约束 异常处理 MD5 日志处理
###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...
- python之路--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
- python --- 20 约束 异常处理 MD5 日志
一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...
- Python 约束 , 自定义异常 , 加密 , 日志
约束 约束 , 约束其派生类: 保证派生类中必须编写send方法 , 不然执行可能就会报错 Python中 语法: class BaseMessage(object): def send(self ...
- 20 约束 异常处理 MD5 日志
三十九, 一.类的约束 1.抛出异常 NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完 ...
- python约束 与MD5加密写法
python 中约束写法有两种 1 常用的通过继承关系主动抛出异常 2 通过抽象类+抽象方法 1 常用的通过继承关系主动抛出异常写法 在本send方法中报错不会抛出异常, class BaseMes ...
- python--类的约束, 异常处理, MD5, 日志处理
一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
随机推荐
- 彻底弄懂tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope异同
https://blog.csdn.net/qq_22522663/article/details/78729029 1. tf.Variable与tf.get_variabletensorflow提 ...
- IDEA 创建HDFS项目 JAVA api
1.创建quickMaven 1.在properties中写hadoop 的版本号并且通过EL表达式的方式映射到dependency中 2.写一个repostory将依赖加载到本地仓库中 这是加载完成 ...
- Trigger,Cursor
USE [Demo]GO /****** Object: StoredProcedure [dbo].[p_couser_Student] Script Date: 02/24/2014 20:43: ...
- C++中的构造函数
C++中的构造函数可以分为4类: (1)默认构造函数.以Student类为例,默认构造函数的原型为 Student()://没有参数 (2)初始化构造函数 Student(int num,int ag ...
- Unity3D无限奔跑者Playmaker v1.5
这款功能丰富的移动准备包内含使您自己的各种各样的3D游戏运行的一切要素.无需编程! 功能 1 - 响应式滑动控制2 - 投掷炮弹3 - 可破坏物体4 - 能力提升道具- 金币磁铁- 护盾- 继续密钥- ...
- [leetcode]311. Sparse Matrix Multiplication 稀疏矩阵相乘
Given two sparse matrices A and B, return the result of AB. You may assume that A's column number is ...
- session高级(session入库)
我们知道,session是一种会话技术,用来实现跨脚本共享数据. 在之前的php会话技术中我们介绍过,session是存放在服务器端的文件里的,因此session有可能因为文件数量过多,会在查询ses ...
- sourceTree git的一些命令
经常使用的三个命令 1.添加修改过的文件到缓冲区 git add. 2.commit到本地 git commit -am ' 更改描述' 3.如果是多人开发的话,中间可能会有别人先提交的这是就需要先把 ...
- go语言中操作mysql的方法
需要下载指定的golang的mysql驱动包 > go get github.com/go-sql-driver/mysql 下面的例子: package main; import ( &quo ...
- php ActiveMQ的发送消息,与处理消息
我们以一个简单的用户注册为例,当用户点击注册按钮后,我们发送一个消息,后台php接收到该消息然后处理. 1.php代码如下: <?php $stomp = new Stomp('tcp://19 ...