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: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...
随机推荐
- JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...
- 5. Longest Palindromic Substring (DP)
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- HDU 3691 Nubulsa Expo(全局最小割)
Problem DescriptionYou may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa i ...
- FortiGate设备管理
1.Web管理 1.FortiGate出厂配置 默认地址为192.168.1.99,可以通过https的方式进行web管理(默认用户名admin,密码为空).不同型号设备用于管理的接口略有不同,如: ...
- JSP跳转到指定位置
通常情况下用如下写法即可 onclick='window.location.hash = "某元素的id";' 但我的元素是动态生成的,直接生成代码附带多个单引号和双引号,js语言 ...
- java 基础之--nio 网络编程
在传统的Java 网络编程中,对于客户端的每次连接,对于服务器来说,都要创建一个新的线程与客户端进行通讯,这种频繁的线程的创建,对于服务器来说,是一种巨大的损耗,在Java 1.4 引入Java ni ...
- Couchbase学习和使用
Couchbase介绍 couchbase的关键有两点:延后写入和松散存储.延后写入,顾名思义,couchbase在对数据进行增删时会先体现在内存中,而不会立刻体现在硬盘上,从内存的修改到硬盘的修改这 ...
- 【APT】SqlServer游标使用
use [ElephantCredit] go begin transaction tran_bank; print '**脚本开始执行!'; declare @tran_error int , @n ...
- tkinter模块
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- C# CashCode项目开发
如果不是因为这个项目,我可以一辈子都接触不到识币器,更不会知道CashCode是干啥的. 从项目开始,到CashCode机器到桌面上测试,中间在网上找过资料,也联系过北京的技术,他们发来的PDF让我看 ...