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)    

day20 类的约束的更多相关文章

  1. python之路--类的约束, 异常处理, MD5, 日志处理

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

  2. python学习笔记:第19天 类的约束、异常、MD5和logging

    目录 一.类的约束 二.异常处理: 三.MD5加密 四.日志(logging模块) 一.类的约束 真正写写项目的代码时都是多人协作的,所以有些地方需要约束程序的结构.也就是说,在分配任务之前就应该把功 ...

  3. python基础学习笔记——类的约束

    ⾸先, 你要清楚. 约束是对类的约束. 用一个例子说话: 公司让小明给他们的网站完善一个支付功能,小明写了两个类,如下: class QQpay: def pay(self,money): print ...

  4. day24——面向对象三大特性、鸭子类型、类的约束、super的深度解析

    day24 面向对象的三大特性 继承.封装.多态 封装:把一堆东西(代码,数据)放到一个地方(空间),并且可以使用 class Student: def __init__(self, name, se ...

  5. was8.5和aop的问题:JVMVRFY013 违反类装入约束

    一.错误日志:Error 500: javax.servlet.ServletException: java.lang.VerifyError: JVMVRFY013 违反类装入约束 类=org/sp ...

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

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

  7. 封装 多态 类的约束 super

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  8. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  9. Python面向对象04 /封装、多态、鸭子类型、类的约束、super

    Python面向对象04 /封装.多态.鸭子类型.类的约束.super 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的 ...

随机推荐

  1. Qt--信号槽传递自定义结构体参数

    自定义结构体参数的信号槽连接 (1) 对于自定义的结构体参数,信号槽无法识别参数,导致信号槽连接不起作用.所以需要注册结构体参数.在结构体中声明结束的地方加上结构体注册. struct DealDet ...

  2. 梯度消失 / 梯度爆炸以及Xavier初始化

    2018-12-06 16:25:08 首先我们先来看一下求解梯度的公式,以下面三层的网络为例: 如果w初始化为大于1的数字,在深层神经网络计算梯度的时候就会出现梯度爆炸的现象: 如果w初始化为小于1 ...

  3. feign三:覆写feign的默认配置及feign的日志

    feign三:覆写feign的默认配置及feign的日志 默认配置复写 本项目地址:http://192.168.1.103:7601 本例是通过feign调用 eureka项目中的/eureka/a ...

  4. Twisted 简介

    Twisted是用Python实现的基于事件驱动的网络引擎框架,Twisted支持许多常见的传输及应用层协议,包括TCP.UDP.SSL/TLS.HTTP.IMAP.SSH.IRC以及FTP.就像Py ...

  5. VA&RVA 和 RVA to RAW

    VA&RVA VA指的是进程虚拟内存的绝对地址,RVA(Relative Virtual Address,相对虚拟地址)指从某个基准位置(ImageBase)开始的相对地址.VA与RVA满足下 ...

  6. sgu 191 Exhibition

    题意:开始只有某一展台(设为A),有2种操作.1.A展台上放B产品(或者B展台放A产品).2.A展台左边1位放B展台,左边2位放A产品.给出最终产品的排列,问能否实现. 考虑最后一个用2操作的展台,因 ...

  7. jquery父、子、兄弟节点查找

    js var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var ch ...

  8. ubuntu18.04安装jdk1.8.0_11并配置环境变量.md

    参考:https://www.jianshu.com/p/95f075761dc0 由于安装文件免安装程序,故只需要将对应文件复制到相应目录,然后配置环境变量即可: 1.移动文件到指定目录 (1)在/ ...

  9. 【洛谷p1060】开心的金明

    (DP背包第一题,值得记录思路呀) 开心的金明[传送门] 洛谷算法标签: 01背包问题的思路分析见[总结]01背包问题 这道题显然是典型的01背包问题,首先我们显然可以由输入的第i个物体的价格v[i] ...

  10. luffy之多条件登录与极验滑动验证码

    多条件登录 JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确. 我们可以通过修改Django认证系统的认证后端( ...