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 2.x中,当您要将一个方法标记为抽象时,可以这样定义它: 然后,如果您忘记覆盖它,则会收到一个很好的提醒异常。是否存在将字段标记为抽象的等效方法?还是在您可以做的所有工作中在类文档字符串中说明? 起初我以为可以将字段设置为NotImplemented,但是当我查看它的实际用途(进行大量比较)时,它似乎很脏。 问题答案: 是的你可以。使用装饰器。例如,如果您有一个名为“e
问题内容: 最近升级到Python 3.8,并已安装。但是,当尝试运行时出现以下错误: 我知道默认情况下Windows上的Python 3.8已切换为默认设置,因此我怀疑它与此相关。 Jupyter目前不支持Python 3.8?有没有解决的办法? 问题答案: 编辑 此问题存在于较早的Jupyter Notebook版本中,并已在 6.0.3 版(2020年1月21日发行)中修复。要升级到最新版本
本文向大家介绍shell 编程中空格的使用方法,包括了shell 编程中空格的使用方法的使用技巧和注意事项,需要的朋友参考一下 1.定义变量时, =号的两边不可以留空格. eg: gender=femal————right gender =femal———–wrong gender= femal———–wrong 2.条件测试语句 [ 符号的两边都要留空格. eg: if [ $gender =
本文向大家介绍Java编程中的equals方法使用全解,包括了Java编程中的equals方法使用全解的使用技巧和注意事项,需要的朋友参考一下 通过下面的例子掌握equals的用法 画出内存分析图分析c1和c2比较的结果 程序: 执行完之后内存之中的布局如下图所示, c1指向一个对象,c2也指向一个对象,c1和c2里面装着的是这两只Cat对象在堆内存里面存储的地址,由于这两只Cat对象分别位于不同
本文向大家介绍PHP编程中的__clone()方法使用详解,包括了PHP编程中的__clone()方法使用详解的使用技巧和注意事项,需要的朋友参考一下 可以在对象类中定义一个__clone()方法来调整对象的克隆行为。此方法的代码将在克隆操作期间执行。除了将所有现有对象成员复制到目标对象之外,还会执行__clone()方法指定的操作。下面修改Corporate_Drone类,增加以下方法: 之后,
本文向大家介绍nodejs中使用多线程编程的方法实例,包括了nodejs中使用多线程编程的方法实例的使用技巧和注意事项,需要的朋友参考一下 在以前的博文别说不可能,nodejs中实现sleep中,我向大家介绍了nodejs addon的用法。今天的主题还是addon,继续挖掘c/c++的能力,弥补nodejs的弱点。 我曾多次提到过nodejs的性能问题。其实就语言本身而言,nodejs的性能还是