类的约束 异常处理 自定义异常 MD5 日志信息处理

 1 .类的约束  

  1) 写一个父类,父类中的某个方法要抛出一个异常 NotlmplemenredError(重点)

class Base: #创建一个父类约束子类
    def login(self):
       raise NotImplementedeError('系统报错,请重新输入') # 扔一个错误给子类,
约束他们按照指定的内容输入 class yonghu(Base): # 创建普通用户类 def login(self): print('用户登录') class guanli(Base): #创建管理员登录类 def login(self): print('普通管理员登录') class chaoguan(Base): #创建超管类 def deng(self): print("超管登录") def denglu(content): #整合登录信息功能 content.login() y=yonghu() #创建用户 g=guanli() c=chaoguan() denglu.login(y) # 用户登录 denglu.login(g) denglu.login(c) #此时超管用户登录没有login这一项,所以会报错,此时应该创建一个约束  

  2) 抽象类和抽象方法

 抽象类和抽象方法 ->Java ,c#

抽象方法不需要给出具体的方法体,  

抽象发放内置写一个pass就可以了

在一个类中如果有一个方法是抽象方法,那么这个类一定是抽象类

抽象类中,如果有抽象方法,此时这个类不能创建对象

# 写一个抽象方法: 导入一个模块
from abc import ABCMeta,abstractmethod  #引入一个抽象模块
class animal(metaclass=ABCMeta):
    @abstractmethod 
    def chi(self): pass # 写完上面的东西就是抽象类

    def he(self): # 在抽象类中也是可以有正常方法的
        print('动物会动')

class cat(animal):
    def chi(self): #和上面第一种方法性质一样,都是约束子类要与父类中的抽象方法一致
        print('猫喜欢吃鱼')

a=cat()
a.chi()
a.he() #抽象类中也可以有正常方法,同样可以正常使用

使用抽象方法时 ,需要引入的模块

form abc import ABCMeta,abstractmethod class Base(metaclass=ABCMeta):   @abstractmethod   def fangfa(self):     pass  

 

2 .异常处理 try except raise

try : # 尝试
    print('1/0')
    f=open('a1',mode='r')
except ZeroDivisionError: # 0的错误 
    print('零不能作分母')
except FileNotFoundError:  # 文件错误
    print('文件不存在')
else: 
    print('正常执行') #如果不报错,就执行这里
finally:
    print('不管报不报错都执行这一步') #不管报不报错都执行这里

 

  

 

所有异常的根源都是Exception, 所有的异常的类都会默认继承Exception 

try:
  代码
except 异常类:
  出了错,如何处理异常
except 异常类:
  出了错,如何处理异常
except 异常类:
  出了错,如何处理异常
else:
    如果不出错,走着一条
finally:
    不管出不出错,都走这一条,都要执行  

raise 异常类('信息')

如何自己定义异常

# 随便写一个类,只要他能继承Exception,就可以自定义错误
class ztyException(Exception):
    pass  
class 类(Exception):  # 继承 Exception是包含所有的错误
    pass

如何手动抛出异常

#我们以数字相加为例
class NotintException(Exception): #自定义一个异常
    pass

def cul(a,b):
    if (type(a)==int or type(a)==folat) and (type(b)==int or type(b)==folat):
        return a+b
    else:
        raise NotintException('我没办法处理不是整数的类型') 

堆栈信息 (错误信息)

import traceback
traceback.format_exc()

3. MD5加密

import hashlib 
content=input('请输入你要加密的内容:')
obj=hashlib.md5(b'bviuafakbvuaubuwaoi')  #加盐
obj.update(content,encode('utf-8')) #将加盐后的代码转成utf-8
print(obj.hexdigest()) # 拿到密文 
 # 注 : 这里的加的盐加上之后是不能更改的,否则你的加密的内容也会改变 

4. 日记处理(不要太重点记,留一份,侧重点再用)

日志主要是记录用户操作的每一步步骤 : 什么用户什么时间干了啥

 

等级(logging) :

critical > error > warning > info > debug
critical : 50

 error : 40

 warning: 30

 info : 20

 debug : 10

 用法

import logging 

logging.critical(msg,*args,**kwargs)

logging.error(msg, *args, **kwargs)

logging.warning(msg, *args, **kwargs)

logging.info(msg, *args, **kwargs)

logging.debug(msg, *args, **kwargs)    

 

posted @ 2018-12-22 14:51  想扣篮的小矮子  阅读(130)  评论(0编辑  收藏  举报