Python中NotImplementedError异常的正确使用场景与示例
本文详解Python中NotImplementedError异常的使用方法。通过父类预留接口、子类未实现时抛出异常的场景,展示如何利用该异常强制子类实现特定方法。包含代码示例、运行结果分析及正确实现后的对比,帮助开发者理解抽象基类的设计模式。
在Python编程中,raise语句用于触发错误,具体的报错条件可由开发者自定义。在面向对象编程(OOP)的设计中,一种常见做法是在父类中预留一个方法接口而不提供具体实现,要求其在子类中完成具体逻辑。
当设计要求子类必须实现某个方法,否则会导致程序逻辑错误或运行时问题,使用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()
在新代码中,子类ChildClass对test_demo方法进行了具体实现。
程序运行结果如下:
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\10>pythonerror_demo.py OKOKOOK!
从执行结果可以看出,只要相应的方法接口在子类中得到了正确实现,就不会再抛出未实施的错误。
以上关于Python中NotImplementedError的使用方法分享完毕,希望能为读者提供参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









