一个主机可以做几个网站域名,wordpress 标题属性,网站建设加空间,如何自己设计装修效果图一、类的约束 1、约束就是对类的约束。其实就是父类对子类进行约束#xff0c;子类必须要写xxx方法。 2、抽象#xff1a;就是当我们没法对一个功能或者一个属性进行精确的表述#xff0c;一般都采用抽象的方式给出。 #xff08;1#xff09;抽象类的书写规范 from abc i… 一、类的约束 1、约束就是对类的约束。其实就是父类对子类进行约束子类必须要写xxx方法。 2、抽象就是当我们没法对一个功能或者一个属性进行精确的表述一般都采用抽象的方式给出。 1抽象类的书写规范 from abc import ABCMeta,abstractmethod
# 引入抽象方法的模块class Base(metaclassABCMeta): #定义抽象类 maetaclassABCmetaabstractmethod#抽象方法的关键字def 方法(self):pass (2)抽象类相关的知识点 a一个类包含抽象方法一定属于抽象类 b抽象类可以包含正常的方法实例方法、类方法、静态方法 c抽象类不能创建对象 d如果子类未对父类的抽象方法进行重写该类也是一个抽象类无法创建对象 f接口类中全都是抽象方法 from abc import ABCMeta,abstractmethod
# 引入抽象方法的模块class Base(metaclassABCMeta): #定义抽象类 maetaclassABCmetaabstractmethod#抽象方法的关键字def he(self):passdef chi(self):print(吃什么)class Foo(Base):def shui(self):print (睡你麻痹)
fFoo()#Cant instantiate abstract class Foo with abstract methods he
f.shui()
# 只要类包含了抽象方法就不能创建对象 2、python中约束有的两种方式贴吧登陆 1使用抽象类和抽象方法 from abc import ABCMeta,abstractmethod
class Base(metaclassABCMeta):abstractmethod #定义一个抽象的login方法def login(self):pass
class Normal(Base):def login(self):print(普通用户登录)
class Memer(Base):def login(self):print(吧务登陆)
class Admin(Base):def login(self):print(管理员登录) 2使用抛出异常并且抛出的异常时NotImplementError。这样比较专业并且错误比较明确。 #如果子类没有重写父类的方法,执行了父类的方法则抛出异常
class Base:def login(self):raise NotImplementedError(你没有重写该方法,滚回去重写)
class Normal(Base):def login(self):print(普通用户登录)
# class Memer(Base):
# def login(self):
# print(吧务登陆)
class Memer(Base):pass
class Admin(Base):def login(self):print(管理员登录)
nNormal()
mMemer()
aAdmin()
n.login()
m.login()#NotImplementedError: 你没有重写该方法,滚回去重写
a.login() 二、异常处理 1、格式 try:进行操作
except Exception as e:#Exception是异常的父类,可以捕获所有的异常捕获异常后,给予提示语
else:try中没有出现错误,执行这里的操作
finally:不管出不出错都会执行这里的操作 解读:程序先执行try中的操作,如果出错了,就会走到except里面,进行相应的操作,如果没有出错,就直接执行else里面的操作,不管出不出错都会执行最后的finally. 2、抛出异常 1关键字 raise def cul(a,b):if (type(a)int or type(a)float)and (type(b)int or type(b)float):return abelse:raise Exception(请给我int或者float)#抛出异常,异常Exception
retcul(3,麻辣烫)#Exception: 请给我int或者float (2)自定义异常 实现:定义一个异常继承Exception就可以实现自定义异常了(Exception是异常的基类,) class GenderException(Exception):#定义了一个性别异常passclass Person:def __init__(self,name,gender):self.namenameself.gendergenderdef got_nan_yushi(self):x洗澡:return:if self.gender男:print(欢迎光临)else:raise GenderException(性别错了) #抛出自定义异常 3、异常处理 1处理除数不能是0的异常 # ZeroDivisionError
try: #把需要处理的对象放入其中print(10/0)
except ZeroDivisionError as e:print(0不能做除数)
# 异常处理结果显示:0不能做除数 (2)获取错误信息 traceback (目的主要是方便程序员排查错误) import traceback #插入堆栈模块
# traceback这个模块可以获取到我们每个⽅法的调用信息
try: #把需要处理的对象放入其中print(10/0)
except ZeroDivisionError as e:valtraceback.format_exc()#获取堆栈信息print(0不能做除数)print()print(val)
# 异常处理结果显示:0不能做除数 结果
0不能做除数Traceback (most recent call last):File E:/qishi/Day19 约束/04异常处理.py, line 79, in moduleprint(10/0)
ZeroDivisionError: division by zero 三、日记处理 1、基本步骤 1. 导入logging模块. 2. 简单配置⼀下logging 3. 出现异常的时候(except). 向⽇志⾥写错误信息 2、配置信息如下 logging.basicConfig(filenamex1.txt,
format%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s,
datefmt%Y-%m-%d %H:%M:%S,
level10) # 当前配置表示 10以上的分数会被写⼊⽂件 # # 日记
# 1、导入logging模块
# 2、简单配置一下logging
# 3、出现异常的时候向日记里面写错误信息
import logging
import traceback
# filename: ⽂件名
# format: 数据的格式化输出. 最终在⽇志⽂件中的样⼦
# 时间-名称-级别-模块: 错误信息
# datefmt: 时间的格式
# level: 错误的级别权重, 当错误的级别权重⼤于等于leval的时候才会写⼊⽂件
logging.basicConfig(filenamex1.txt,
format%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s,
datefmt%Y-%m-%d %H:%M:%S,
level20) # 当前配置表示 10以上的分数会被写⼊⽂件
# CRITICAL 50
# FATAL CRITICAL
# ERROR 40
# WARNING 30
# WARN WARNING
# INFO 20
# DEBUG 10
# NOTSET 0
# logging.critical(我是critical) # 50分. 最贵的
# logging.error(我是error) # 40分logging.warning(我是警告) # 警告 30
# logging.info(我是基本信息) # 20
# logging.debug(我是调试) # 10
# logging.log(2, 我是⾃定义) # ⾃定义. 看着给分try:ret10/0
except ZeroDivisionError as e:print(正在写入日记)logging.error(traceback.format_exc())print(写入完毕) 3、实例产生10个错误记录下来 import logging
import traceback
logging.basicConfig(filenamex1.txt,
format%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s,
datefmt%Y-%m-%d %H:%M:%S,
level20) # 当前配置表示 20以上的分数会被写⼊⽂件
class JackError(Exception):#自定义异常passfor i in range(10):try:if i%30:raise FileExistsError(文件不在押)elif i%31:raise KeyError(按错了)else:raise JackError(Jack错了)except FileExistsError as e:valtraceback.format_exc()logging.error(val)print(文件丢失)except KeyError as e:valtraceback.format_exc()logging.error(val)print(瞎jb按)except JackError as e:valtraceback.format_exc()logging.error(val)except Exception:valtraceback.format_exc()logging.error(val)print(其他错误) log文件2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 44, in moduleraise FileExistsError(文件不在押)
FileExistsError: 文件不在押2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 46, in moduleraise KeyError(按错了)
KeyError: 按错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 48, in moduleraise JackError(Jack错了)
JackError: Jack错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 44, in moduleraise FileExistsError(文件不在押)
FileExistsError: 文件不在押2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 46, in moduleraise KeyError(按错了)
KeyError: 按错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 48, in moduleraise JackError(Jack错了)
JackError: Jack错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 44, in moduleraise FileExistsError(文件不在押)
FileExistsError: 文件不在押2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 46, in moduleraise KeyError(按错了)
KeyError: 按错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 48, in moduleraise JackError(Jack错了)
JackError: Jack错了2018-11-12 18:43:50 - root - ERROR -日记: Traceback (most recent call last):File E:/qishi/Day19 约束/日记.py, line 44, in moduleraise FileExistsError(文件不在押)
FileExistsError: 文件不在押 转载于:https://www.cnblogs.com/angle6-liu/p/9947251.html