一 . 类的约束

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

class Base:
# 对子类进行了约束. 必须重写该方法
# 以后上班了. 拿到公司代码之后. 发现了notImplementedError 继承他 直接重写他
def login(self):
# 没有被实现错误
raise NotImplementedError("你要重写一下login这个方法. 否则报错!") # 抛异常 .
class Member(Base):
def login(self):
print("我是普通人登录")
class BaWu(Base):
def login(self):
print("吧务登录")
class Houtai(Base):
def denglu(self): # 报错, 上层程序员写代码没有按照规范来 需要改成login
print("后台登录")
# 整合这些个功能
def deng(obj):
obj.login() m = Member()
bw = BaWu()
ht = Houtai() deng(m)
deng(bw)
deng(ht)

  2. 抽象类和抽象方法

  # 抽象方法不需要给出具体的方法体. 抽象方法内只写一个pass就可以了
  # 在一个类中如果有一个方法是抽象方法. 那么这个类一定是一个抽象类
  # 抽象类中. 如果有抽象方法. 此时这个类不能创建对象
  # 如果一个类中所有的方法都是抽象方法. 这个类可以被称为接口类
# 写一个抽象方法:导入一个模块
from abc import ABCMeta, abstractmethod
# 此时抽象类不能创建对象
class Animal(metaclass=ABCMeta): # 写完这东西. 就是个抽象类
@abstractmethod # 抽象方法
def chi(self): pass # 吃应该只是一个抽象概念. 没办法完美的描述出来吃什么东西
# 抽象类中可以有正常的方法
def dong(self):
print("动物会动")
# class Cat(Animal): # 此时猫里面也有一个抽象方法, 此时的猫是创建不了对象的
# pass
class Cat(Animal):
def chi(self): # 重写父类中的抽象方法
print("猫喜欢吃鱼")
a = Cat()
a.chi()
a.dong()

二 . 异常处理

  1. 异常处理. try except raise
try:
代码
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
except 异常类:
除了错, 如何处理异常
else:
当程序不出错
finally:
不管出不出错, 都要执行
try:
print(1/10)
# f = open("哈哈哈哈哈", mode="r")
# d = {[]:123}
except ZeroDivisionError: # 可以处理所有错误
print("除以0出错了")
except FileNotFoundError:
print("文件不存在的错误")
except Exception: # 兜底的
print("其他错误")
else: # 当try中的代码不产生任何错误的时候. 会自动的执行else里的代码
pass
finally: # 最终. 不管出错还是不出错. 都要执行最后的finally 一般用来收尾
print("哈哈哈哈哈哈哈哈啊哈")

      2. raise 异常类("信息")

        如何自己定义异常
class 类(Exception):
pass
# 如何自己定义异常
# 随便写一个类. 这个类只要继承了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 CulException("我没办法给你处理这样的运算") print(cul("就不放, 气死你",2))

    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 nan_zao_tang_zi(ren):
if ren.gender == "男":
ren.xizao()
else:
raise GenderException("性别不对. 去对门看看") # 抛异常是很重要的
try:
p1 = Person("张三", "不知道")
p2 = Person("李四", "男")
nan_zao_tang_zi(p1)
nan_zao_tang_zi(p2)
except GenderException:
# ret = traceback.format_exc() # 查看堆栈信息, 看错误的
# print(ret)
print("出错了. 很可惜")

三 . MD5

import hashlib

def my_md5(s):
obj = hashlib.md5(b"ghjhgfl") # 加盐 里面的字母随便给
obj.update(s.encode("utf-8")) # 把要加密的内容给md5
return obj.hexdigest() print(my_md5("我是吴彦祖")) # afd1938a01d0c5894d0781fb335249a3

四 . 日志处理 

  等级:
    critical: 50
    error:40
    warning:30
    info:20
    debug:10

import logging
#
# 配置好日志的处理, 默认就是GBK
logging.basicConfig(filename='x1.txt', # 把日志信息写入的文件名
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', # 时间的格式
level=40) # 当前配置表示 10以上的分数会被写入日件 # 向日志文件写入内容
logging.critical("我是赌神,我是赌神") # 50, 几乎是最高的
logging.error("我是周润发") # 40 平时使用最多的就是他
logging.warn("气死我了") # 30 警告
logging.warning("还好吧")
logging.info("提示") # 20 级
logging.debug("开发的时候把这个开着") #
logging.log(999, "宝宝今天有懵逼了") # level = 999

import logging

# 创建一个操作日志的对象logger(依赖FileHandler)
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=10) # 创建一个日志文件处理对象
logger1.addHandler(file_handler) # 把文件添加到日志 logger1.error("麻花藤明天请大家吃饭. 去不去?") # 再创建一个操作日志的对象logger(依赖FileHandler)
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.error("我才不去呢. 我们在北京. 离你那么远")

  

  

 

python之路--类的约束, 异常处理, MD5, 日志处理的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. python记录_day019 类的约束 异常处理 日志

    一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...

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

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

  8. Python 入门 之 类的约束以及super()剖析

    Python 入门 之 类的约束以及super()剖析 1.类的约束 第一版: class WechatPay: def pay(self): print("微信支付") clas ...

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

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

随机推荐

  1. centos下安装 glances 的问题

    开始想安装htop 然后 yum installhtop 没有 yum searchhtop 也没有  然后上github 发现一个比htop还华丽的东西. Glances 大概这个样子的. 可以一览 ...

  2. D. Zero Quantity Maximization(hash+map)

    题意:就是让c=a*x+b,给你一个a[],b[],让你尽可能多的让c[]=0,输出有多少. 思路:直接令c=0,则x=-b/a, 也就是一条直线,通过这样就用hash值使相同的k值映射到一起,使用了 ...

  3. java和maven环境变量设置,Tomcat部署

    Java环境变量设置 Win10我的电脑右击属性,高级系统设置,高级,环境变量设置 新建系统变量JAVA_HOME 和CLASSPATH  变量名:JAVA_HOME 变量值:C:\Program F ...

  4. 【css】css规范

    说法一: 属性的书写顺序, 举个例子: .hotel-content { /* 定位 */ display: block; position: absolute; left: 0; top: 0; / ...

  5. Debian 8.9 搭建wordpress个人博客

    想自己搭个博客玩玩,就搭建了此博客,过程可谓艰辛啊! 先在阿里云买了个  轻量应用服务器 1个月10块钱,好贵.... 用 windows sever 下载不了phpstudy,也不知道怎么回事... ...

  6. 初学Python——进程

    什么是进程? 程序不能单独执行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的过程就叫做进程.进程是操作系统调度的最小单位. 程序和进程的区别在于:程序是储存在硬盘上指令的有序集合,是 ...

  7. 不可变对象和Biulder模式(面试问题)

    String就是一个典型的不可变对象.外界的操作不能改变它,如果尝试改变都会返回一个新的String对象. 具体实现起来就是把属性全部变成private 和 final的,这个类也是final的不可继 ...

  8. IDEA 编译 Jmeter 4.0 ( 二次开发_1 )

    IDEA 编译 Jmeter 下载 http://jmeter.apache.org/download_jmeter.cgi 下载源码后解压『Jmeter』,我这边下载的是最新的『apache-jme ...

  9. ASP.NET Core如何使用WSFederation身份认证集成ADFS

    如果要在ASP.NET Core项目中使用WSFederation身份认证,首先需要在项目中引入NuGet包: Microsoft.AspNetCore.Authentication.WsFedera ...

  10. SparkSQL – 从0到1认识Catalyst(转载)

    最近想来,大数据相关技术与传统型数据库技术很多都是相互融合.互相借鉴的.传统型数据库强势在于其久经考验的SQL优化器经验,弱势在于分布式领域的高可用性.容错性.扩展性等,假以时日,让其经过一定的改造, ...