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!

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

转载:https://blog.csdn.net/grey_csdn/article/details/77074707

最新文章

  1. 超高性能的json序列化之MVC中使用Json.Net
  2. mysql中char,varchar与text类型的区别和选用
  3. 等价表达式(noip2005)
  4. StringIO 模块用于在内存缓冲区中读写数据
  5. FZU 1591 Coral的烦恼
  6. 用PHP生成随机数的函数
  7. QWidget QMainWindow QDialog 三者区别
  8. 响应头location 页面跳转
  9. 随意记的一点 js 笔记
  10. Saltstack自动化运维
  11. IO多路复用深入浅出
  12. Docker 小记 — Compose &amp; Swarm
  13. 机器学习基石:08 Noise and Error
  14. [Swift]LeetCode638. 大礼包 | Shopping Offers
  15. 从容器里dump java堆实验探索(原创)
  16. 微信小程序,加载更多
  17. SpringCloud服务负载均衡实现原理01
  18. 初探AngularJs框架(三)
  19. const 内联 枚举 宏
  20. 第十一周(11.24-12.01)----ptim测试程序运行速度

热门文章

  1. 【ExtJs】ext前台中的日期控件传输时间到后台的转换保存过程
  2. python图像处理-生成随机验证码
  3. ORM简单增删改查
  4. Centos7查不出ip地址
  5. (转)Java垃圾回收基本过程
  6. 如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
  7. Oracle【select from 语句】
  8. VM12及CentOS-6.10的安装
  9. ble ic
  10. 卸载TensorFlow