Python编程中NotImplementedError的使用方法


Posted in Python onApril 21, 2018

Python编程中raise可以实现报出错误的功能,而报错的条件可以由程序员自己去定制。在面向对象编程中,可以先预留一个方法接口不实现,在其子类中实现。

如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好。

而此时产生的问题分类是NotImplementedError。

写一段代码如下:

class ClassDemo:
    def test_demo(self):
           raiseNotImplementedError("my test: not implemented!")
 
classChildClass(ClassDemo):
    pass
 
inst =ChildClass()
inst.test_demo()

程序运行结果:

E:\01_workspace\02_programme_language\03_python\OOP\2017\08\10>pythonerror_demo.py
Traceback (mostrecent call last):
 File "error_demo.py", line 9, in<module>
  inst.test_demo()
 File "error_demo.py", line 3, intest_demo
  raise NotImplementedError("my test:not implemented!")
NotImplementedError:my test: not implemented!

从上面的运行结果可以看出,程序识别到了这个方法并没有在子类中实现却被调用了。

从代码报错的行数来看,只有这个子类的实例化对象调用相应的方法的时候才会报错。

这样的推测结论也很容易通过代码修改测试得到验证,此处不再验证。

进一步修改代码:

class ClassDemo:
    def test_demo(self):
           raiseNotImplementedError("my test: not implemented!")
 
classChildClass(ClassDemo):
    def test_demo(self):
       print("OKOKOOK!")
 
inst =ChildClass()
inst.test_demo()

在新的代码中,子类中实现了对test_demo方法的设计。

程序的运行结果如下:

E:\01_workspace\02_programme_language\03_python\OOP\2017\08\10>pythonerror_demo.py
OKOKOOK!

从程序的执行结果可以看出,只要相应的方法接口进行了实现,在执行的时候未实施的错误便不会报出。

以上这篇Python编程中NotImplementedError的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中处理字符串之islower()方法的使用简介
May 19 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
用python做游戏的细节详解
Jun 25 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
Python装饰器结合递归原理解析
Jul 02 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
python中@property的作用和getter setter的解释
Dec 22 Python
Python3压缩和解压缩实现代码
Mar 01 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 #Python
python 限制函数调用次数的实例讲解
Apr 21 #Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 #Python
对Python中的@classmethod用法详解
Apr 21 #Python
python3+dlib实现人脸识别和情绪分析
Apr 21 #Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 #Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 #Python
You might like
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
js实现楼层导航功能
2017/02/23 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
业务副厂长岗位职责
2014/01/03 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
好人好事演讲稿
2014/09/01 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL
python_tkinter事件类型详情
2022/03/20 Python
MySQL分区路径子分区再分区
2022/04/13 MySQL
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android