一.约束

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 日志处理的更多相关文章

  1. python 约束. 异常处理. MD5. 日志处理

    一.约束 1.抛异常 # # 项目经理写的 class Base: # # 对子类进行了约束. 必须重写该方法 # # 以后上班了. 拿到公司代码之后. 发现了NotImplementedError ...

  2. 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理

    一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...

  3. python 面向对象(五)约束 异常处理 MD5 日志处理

    ###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...

  4. python之路--类的约束, 异常处理, MD5, 日志处理

    一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...

  5. python --- 20 约束 异常处理 MD5 日志

    一.类的约束 1.抛出异常    NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...

  6. Python 约束 , 自定义异常 , 加密 , 日志

    约束 约束 , 约束其派生类:  保证派生类中必须编写send方法 , 不然执行可能就会报错 Python中  语法: class BaseMessage(object): def send(self ...

  7. 20 约束 异常处理 MD5 日志

    三十九, 一.类的约束 1.抛出异常    NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完 ...

  8. python约束 与MD5加密写法

    python 中约束写法有两种 1 常用的通过继承关系主动抛出异常  2 通过抽象类+抽象方法 1 常用的通过继承关系主动抛出异常写法 在本send方法中报错不会抛出异常, class BaseMes ...

  9. python--类的约束, 异常处理, MD5, 日志处理

    一 . 类的约束 1. 写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError class Base: # 对子类进行了约束. 必须重写该方法 # 以后上班了. 拿到公司代 ...

随机推荐

  1. Linux下查看编辑二进制文件:hexedit神器

    1.如果没有hexedit安装hexedit:2.打开终端输入hexedit filename;3.打开即可用键盘输入字符,用方向键移动,ctrl+w保存,ctrl+x退出:4.详细用法 man he ...

  2. JS散度

    https://blog.csdn.net/weixinhum/article/details/85227476

  3. 缩点+染色+DFS codeforce467D

    题目链接:https://vjudge.net/contest/219056#problem/A 推荐博客:https://blog.csdn.net/ck_boss/article/details/ ...

  4. while 解决 10000米绳子 对折当 绳长小于5米时求绳的对折次数

    public static void main(String args[]){ double length = 10000; int day = 0; while(day > 5){ lengt ...

  5. RxJS之过滤操作符 ( Angular环境 )

    一 take操作符 只发出源 Observable 最初发出的的N个值 (N = count). 如果源发出值的数量小于 count 的话,那么它的所有值都将发出.然后它便完成,无论源 Observa ...

  6. expect命令自动登录ssh

    expect是简单的工具原因,依赖于tcl. 直接apt安装就行. 四个关键字: spawn,派生出新进程. expect,期待得到的字符串,可以模式匹配. send,向进程发送字符串. intera ...

  7. vue 引用公共方法(例子:截取字符串固定字数,其余显示...)

    1.写公共js 2.main.js引入公共js 3.在组件中用this.common.方法名 引用

  8. width多少,超过了用....表示

    maxWidth:'140px',whiteSpace:'nowrap',overflow:'hidden',textOverflow:'ellipsis'

  9. ubuntu14.04 安装系统/搜狗/QT/qq/wps/CAJviewer

    1.安装ubuntu系统     http://jingyan.baidu.com/album/4dc40848491fc5c8d946f1b1.html?picindex=1 官方网站:    ht ...

  10. linux minitools+minicom 安装及使用

    1,通过SSH将minitools的安装包传到ubuntu 文件下, 2,   解压minitools.tgz  (具体方法见上一篇) 3,命令安装minicom  :   apt-get insta ...