zoukankan      html  css  js  c++  java
  • 类的约束 异常处理 自定义异常 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)    
  • 相关阅读:
    MySQL next-key lock 加锁范围是什么?
    使用 Docker 安装并连接 MySQL
    Mac 常用软件推荐 —— Java 开发工程师
    Toolkit 大更新:UI 更美观,用起来更方便!
    工作中的设计模式 —— 建造者模式
    工作中的设计模式 —— 策略模式
    工作中的设计模式 —— 原型模式
    Centos7 安装Oracle记录
    Centos7 常用命令和自己平时使用命令
    AutoHotKey 简易自动化脚本的一些资料
  • 原文地址:https://www.cnblogs.com/zty1304368100/p/10156881.html
Copyright © 2011-2022 走看看