python note 25 约束
1、约束
class BaseMessage(object):def send(self):"""必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑。"""raise NotImplementedError(".send() 必须被重写.") #主动抛异常# raise Exception(".send() 必须被重写.")# BaseMessage类用于约束,约束其派生类:保证派生类中必须编写send方法,不然执行可能就会报错。
例子
class BaseMessage(object):def send(self):"""必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑。"""raise Exception()class Email(BaseMessage):def send(self):pass # 发送邮件def f1(self):passdef f2(self):passclass Wechat(BaseMessage):def send(self):pass # 发送微信def f1(self):passdef f2(self):passclass Msg(BaseMessage):def send(self):pass # 发送短信def f1(self):passdef f2(self):pass
2、结论
1. 什么是接口以及作用? 接口时一种数据类型,主要用于约束派生类中必须实现指定的方法。 Python中不存在,Java和C # 中是存在的。 2. Python中使用过什么来约束呢? - 抽象类 + 抽象方法,编写上麻烦。 - 人为主动抛出异常3. 约束时,抛出的异常是否可以用其他的? 不专业:raise Exception(".send() 必须被重写.") 专业:raise NotImplementedError(".send() 必须被重写.")4. 以后看代码,揣摩心思
3、自定义异常
class KeyError(Exception): #定义异常pass class MyException(Exception):def __init__(self, code, msg):self.code = codeself.msg = msg try:raise MyException(1000, '操作异常') except KeyError as obj:print(obj, 1111) except MyException as obj: # 知识点:捕获异常print(obj, 2222) except Exception as obj:print(obj, 3333)
例子
import osclass ExistsError(Exception):passclass KeyInvalidError(Exception):passdef new_func(path,prev):"""去path路径的文件中,找到前缀为prev的一行数据,获取数据并返回给调用者。1000,成功1001,文件不存在1002,关键字为空1003,未知错误...:return:"""response = {'code':1000,'data':None}try:if not os.path.exists(path):raise ExistsError()if not prev:raise KeyInvalidError()passexcept ExistsError as e:response['code'] = 1001response['data'] = '文件不存在'except KeyInvalidError as e:response['code'] = 1002response['data'] = '关键字为空'except Exception as e:response['code'] = 1003response['data'] = '未知错误'return response
4、日志
import logginglogger = logging.basicConfig(filename='xxxxxxx.txt',format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S',level=30)# logging.debug('x1') # 10 # logging.info('x2') # 20 # logging.warning('x3') # 30 # logging.error('x4') # 40 # logging.critical('x5') # 50 # logging.log(10,'x6')import tracebackdef func():try:a = a +1except Exception as e:# 获取当前错误的堆栈信息msg = traceback.format_exc()logging.error(msg) func()
转载于:https://www.cnblogs.com/P-Z-W/p/11108877.html
python note 25 约束相关推荐
- python note
2019独角兽企业重金招聘Python工程师标准>>> 1.使用pypi镜像源加速第三方库在线安装 http://www.cnblogs.com/yudar/p/4444097.ht ...
- python note 15 正则表达式
# 正则表达式 只和字符串打交道 # 正则表达式的规则 # 规则 字符串 从字符串中找到符合规则的内容 # 字符组 : [] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的 # [ ...
- Python类的约束以及super()剖析
1.类的约束 第一版: class WechatPay:def pay(self):print("微信支付")class AliPay:def pay(self):print(&q ...
- 【Python】25个好用到爆的一行Python代码,建议收藏
在学习Python的过程当中,有很多复杂的任务其实只需要一行代码就可以解决,那么今天小编我就来给大家介绍20个实用的一行Python代码,希望对大家能够有所帮助. 1.两个字典的合并 x = {'a' ...
- RUNOOB python练习题25 递归实现阶乘
用来练手的python练习题,原题链接: python练习实例25 题干 : 求1+2!+3!+-+20!的和. 题干要求我们实现一个阶乘的求和,显而易见的,我们可以使用递归来实现阶乘,再使用循环语句 ...
- python 面向对象(五)约束 异常处理 MD5 日志处理
###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...
- Python中类的约束方法
1.python推荐 class Payment:def pay(self,money):raise Exception('按照规范来可以吗?')class Ali(Payment):def pay( ...
- Python学习,约束和异常处理
一.类的约束 首先,你要清楚,约束是对类的约束,比如,现在你是一个项目经理,然后呢,你给手下的人分活,张三你处理一下普通用户登录,李四你处理一下会员登录,王五已处理一下管理员登录,那这个时候呢他们就开 ...
- python中类的约束和限制对象添加属性
通过__slots__限制对象可添加的属性 class A:__slots__ = ['a', 'b']passa1 = A() a1.a = 10 print(a1.a) a1.c = 0 # 只能 ...
最新文章
- Winio驱动在64位windows下无法使用的解决方法
- ​别再用方括号在Python中获取字典的值,试试这个方法
- 《机器学习》 周志华学习笔记第五章 神经网络(课后习题) python实现
- 【EI会议】 2021年图像处理与智能控制国际学术会议(IPIC 2021)
- mybatis当输入参数有多个时的解决方案,Map类型,索引引用输入参数,map输出
- 计算机网络基石 —— 集线器
- html5游戏燕郊,December | 2019 | 微信html5游戏源码发布站
- c++实现串口功能之termios.h头文件研读<一>
- C语言:将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表算法
- wps表格错开半行_word表格错开半行-Excel 表格上下怎么错位!
- Win7和XP操作系统显示文件扩展名
- 我从冯·诺依曼计算机体系,追溯到了JVM,一切原来如此
- ICLR 2022 | 颠覆传统!大规模图像检索系统首次引入「热刷新」模型升级!腾讯清华大学新作...
- 高级软件工程学习总结
- 不能打开数据库 ''。应用程序可能无法识别该数据库,或文件可能损坏。
- Win11 22000.918(KB5016691)正式版发布,解决一系列问题!
- 战争磨盘十四:战争磨盘
- Docker容器管理之Dockercompose.yml文件格式说明
- 大学笔记怎么记?三款软件 - 搭建自己的笔记框架
- 根据银行的标志 获取颜色
热门文章
- qt串口通信_Qt编写气体安全管理系统29-跨平台
- L2-005 集合相似度(STL+暴力)
- mysql消息订阅与发布_消息发布与订阅
- php 慢日志,php-fpm慢执行日志
- oracle中的自增关键字,Oracle中设置自增字段
- 笔记︱利用python + flask制作一个简易本地restful API
- keras系列︱利用fit_generator最小化显存占用比率/数据Batch化
- 一篇搞定导航守卫(vue-router源码学习)
- Linux下7z工具安装
- uva 11732 strcmp() Anyone?