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. mysql count 中使用case when 带条件及去重

    SELECT CASE (SELECT NOW() > '2019-02-12 16:48:00') WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END ...

  2. 字典树(POJ 2503)

    它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高. 它有3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符: 从根节点到某一节点, ...

  3. Codeforces Round #396 (Div. 2) E

    Mahmoud and Ehab live in a country with n cities numbered from 1 to n and connected by n - 1 undirec ...

  4. CentOS Linux 搭建 SVN(CollabNet Subversion)服务器

    安装CollabNet Subversion之前必须先安装JDK1.6和python2.4 ~ 2.6 groupadd svn useradd -g svn svnuser  passwd svnu ...

  5. Python/WSGI 应用快速入门--转

    http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html 这个快速入门指南将会向你展示如何部署简单的 WSGI 应用和普 ...

  6. 说说SpringMVC、SpringBoot和SpringCloud三者之间的联系和区别

    这个问题是我在参加一次面试晚会活动上被问到的一个问题,看标题显然很简单就能够回答出来,但是仔细一琢磨,平时蒙头苦干的我们可能缺少关注和积累,好像并不能用较专业的术语和逻辑很顺畅的表达出来,于是我简要的 ...

  7. Vue.js - day6

    注意: 有时候使用npm i node-sass -D装不上,这时候,就必须使用 cnpm i node-sass -D 在普通页面中使用render函数渲染组件 在webpack中配置.vue组件页 ...

  8. JS 操作对象 事件 样式

    1.获取标记对象 css 1 - class 2 - id 3 - 标记选择器 js 1 - class 2 - id 3 - 标记 4 - name + document.getElementByI ...

  9. codevs 1145 Hanoi双塔问题 2007年NOIP全国联赛普及组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的 ...

  10. SAP云平台,区块链,超级账本和智能合约

    前一篇文章<Hyperledger Fabric on SAP Cloud Platform>,我的同事Aviva已经给大家介绍了基于区块链技术的超级账本(Hyperledger)的一些概 ...