1. 类的约束

1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError

class Base:
def login(self):
raise NotImplementedError("没有实现登录") class Person(Base):
def login(self):
print("正常使用") class SpecialPerson(Base):
def denglu(self):
print("非正常") def func(obj):
obj.login() p1 = Person()
p2 = SpecialPerson()
func(p1)
func(p2)

2. 抽象类和抽象方法

from abc import ABCMeta, abstractmethod

class Base(metaclass = ABCMeta):

@abstractmethod

def fangfa(self):

pass

from abc import ABCMeta,abstractmethod
class Animal(metaclass = ABCMeta):
@abstractmethod
def chi(self):pass
def run(self):
print("能跑") class Cat(Animal):
def chi(self):
print("吃鱼")
def dong(self):
print("guyong") c = Cat()
c.chi()
c.dong()
c.run()

2. 异常处理.

 try except raise finally

try:

代码

except 异常类:

除了错, 如何处理异常

except 异常类:

除了错, 如何处理异常

except 异常类:

除了错, 如何处理异常

else:

当程序不出错

finally:

不管出不出错, 都要执行

raise 异常类("信息")

如何自己定义异常

class 类(Exception):

pass

堆栈

import traceback

traceback.format_exc()

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 zaotang(ren):
if ren.gender == "男":
ren.xizao()
else:
raise GenderException("性别不对,去对门看看") try:
p1 = Person("tom","男")
p2 = Person("jerry","mouse")
zaotang(p1)
zaotang(p2)
except GenderException:
ret = traceback.format_exc()
print(ret)

3. MD5加密

import hashlib

obj = hashlib.md5(b'盐')

obj.update(b"要加密的内容")

print(obj.hexdigest())

import hashlib
def my_md5(c):
obj = hashlib.md5(b"safgd")
obj.update(c.encode("utf-8"))
return obj.hexdigest() print(my_md5(""))

4. 日志处理 

等级:

critical: 50

error:40

warning:30

info:20

debug:10

import logging

logging.basicConfig(filename='x1.txt', # 把日志信息写入的文件名
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', # 时间的格式
level=20) # 当前配置表示 10以上的分数会被写入日件 logging.critical("高")
logging.error("很高")
logging.warning("一般")
logging.info("较低")
logging.debug("最低")
logging.log(500,"自己定") 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=40) # 创建一个日志文件处理对象
logger1.addHandler(file_handler) # 把文件添加到日志 logger1.error("运行出错了") 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.debug("有点小问题")

Python面向对象(约束,异常处理,md5加密)(五)的更多相关文章

  1. python--类的约束,异常处理,MD5加密,日志处理logging模块

    1.类的约束 在开发中,如果项目经理需要对类进行约束,可以有两种方式 1. 对子类进行约束 Base: #对子类进行约束,必须重写这个方法 # 在工作中发现了NotImplementedError之后 ...

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

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

  3. python之约束, 异常处理, md5

    1. 类的约束 1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点) 2. 抽象类和抽象方法 # 语法 # from abc import ABCMet ...

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

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

  5. python面向对象07/异常处理

    python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...

  6. python约束 与MD5加密写法

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

  7. day 20 约束 异常处理 MD5

    1.类的约束(重点): 写一个父类.  父类中的某个方法要抛出一个异常  NotImplementError # 项目经理 class Base:     # 对子类进行了约束. 必须重写该方法    ...

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

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

  9. python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用

    内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...

随机推荐

  1. idea | gitee 码云

    https://blog.csdn.net/qq_32340877/article/details/81205547

  2. iOS 同一个View识别单击和双击手势

    1.给View添加手势 //view添加两个手势检测方法 self.currentPlayerView.userInteractionEnabled = YES; UITapGestureRecogn ...

  3. siege官方文档(译)(一)

    WHAT IS siege? Siege is an open source regression test and benchmark utility. Siege是一款开源回归测试和基准测试工具. ...

  4. AttributeError: module 'shutil' has no attribute 'copyfileobj'

    import shutil #1.copyfileobj(源文件,目标文件) 将文件内容复制到另一个文件 shutil.copyfileobj(open('config.log','r'),open( ...

  5. bootstrap警告框、进度条和列表组

    警告框   <div class="container">      <div class="alert alert-success" rol ...

  6. PL/SQL 多表关联UPDATE

    假设有两个表A和B,A表字段a,b,c,d,B表字段b,e,f,两表的关联条件是字段b,现在想做个data patch,欲将B表中的字段e的值patch给A表的字段c. 有如下两种方法: 1 upda ...

  7. StarUML安装与Win7不兼容解决

    最近在学习建模工具(StarUML)发现 其他功能一切正常 但是无法显示代码导出功能, 正常界面如下: 我的安装确没有导出功能缺少C++,C# ,Java等导出功能 解决办法:     到StarUM ...

  8. POJ 1739 Tony's Tour (插头DP,轮廓线DP)

    题意:给一个n*m的矩阵,其中#是障碍格子,其他则是必走的格子,问从左下角的格子走到右下角的格子有多少种方式. 思路: 注意有可能答案是0,就是障碍格子阻挡住了去路. 插头DP有两种比较常见的表示连通 ...

  9. Mac终端给命令设置别名alias的办法

    在Mac里使用curl https://www.google.com,运行后得不到期望看到的google首页的HTML source code. vi ~/.bashrc, 输入下面两行内容. 以后每 ...

  10. 使用Cordova将您的前端JavaScript应用打包成手机原生应用

    假设我用JavaScript和HTML开发了一个前端应用,我想把该应用打包成能直接在手机上安装和运行(不通过浏览器)的原生应用,例如像下面这样.对应用的用户来说,他们得到的用户体验和真正的用Andro ...