Python編程中NotImplementedError的使用方法
Python編程中raise可以實(shí)現(xiàn)報(bào)出錯(cuò)誤的功能,而報(bào)錯(cuò)的條件可以由程序員自己去定制。在面向?qū)ο缶幊讨?,可以先預(yù)留一個(gè)方法接口不實(shí)現(xiàn),在其子類中實(shí)現(xiàn)。
如果要求其子類一定要實(shí)現(xiàn),不實(shí)現(xiàn)的時(shí)候會(huì)導(dǎo)致問(wèn)題,那么采用raise的方式就很好。
而此時(shí)產(chǎn)生的問(wèn)題分類是NotImplementedError。
寫(xiě)一段代碼如下:
class ClassDemo: def test_demo(self): raiseNotImplementedError("my test: not implemented!") classChildClass(ClassDemo): pass inst =ChildClass() inst.test_demo()
程序運(yùn)行結(jié)果:
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!
從上面的運(yùn)行結(jié)果可以看出,程序識(shí)別到了這個(gè)方法并沒(méi)有在子類中實(shí)現(xiàn)卻被調(diào)用了。
從代碼報(bào)錯(cuò)的行數(shù)來(lái)看,只有這個(gè)子類的實(shí)例化對(duì)象調(diào)用相應(yīng)的方法的時(shí)候才會(huì)報(bào)錯(cuò)。
這樣的推測(cè)結(jié)論也很容易通過(guò)代碼修改測(cè)試得到驗(yàn)證,此處不再驗(yàn)證。
進(jìn)一步修改代碼:
class ClassDemo: def test_demo(self): raiseNotImplementedError("my test: not implemented!") classChildClass(ClassDemo): def test_demo(self): print("OKOKOOK!") inst =ChildClass() inst.test_demo()
在新的代碼中,子類中實(shí)現(xiàn)了對(duì)test_demo方法的設(shè)計(jì)。
程序的運(yùn)行結(jié)果如下:
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\10>pythonerror_demo.py OKOKOOK!
從程序的執(zhí)行結(jié)果可以看出,只要相應(yīng)的方法接口進(jìn)行了實(shí)現(xiàn),在執(zhí)行的時(shí)候未實(shí)施的錯(cuò)誤便不會(huì)報(bào)出。
以上這篇Python編程中NotImplementedError的使用方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python argparse 解析命令行參數(shù)模塊詳情
這篇文章主要介紹了Python argparse 解析命令行參數(shù)模塊詳情,argparse是python用于解析命令行參數(shù)和選項(xiàng)的標(biāo)準(zhǔn)模塊,用于代替已經(jīng)過(guò)時(shí)的optparse模塊2022-07-07Python實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題的方法
這篇文章主要介紹了Python實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題的方法,詳細(xì)分析了約瑟夫環(huán)問(wèn)題的描述、原理與解決方法,需要的朋友可以參考下2016-05-05Python全局變量關(guān)鍵字global的簡(jiǎn)單使用
python中g(shù)lobal關(guān)鍵字主要作用是聲明變量的作用域,下面這篇文章主要給大家介紹了關(guān)于Python全局變量關(guān)鍵字global的簡(jiǎn)單使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06在python中計(jì)算ssim的方法(與Matlab結(jié)果一致)
這篇文章主要介紹了在python中計(jì)算ssim的方法(與Matlab結(jié)果一致),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12對(duì)python操作kafka寫(xiě)入json數(shù)據(jù)的簡(jiǎn)單demo分享
今天小編就為大家分享一篇對(duì)python操作kafka寫(xiě)入json數(shù)據(jù)的簡(jiǎn)單demo,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Django使用celery異步發(fā)送短信驗(yàn)證碼代碼示例
這篇文章主要介紹了Django中如何使用celery異步發(fā)送短信驗(yàn)證碼的代碼示例,有需要的朋友可以借鑒參考下,希望可以對(duì)大家有所幫助2021-09-09python tkinter圖形界面代碼統(tǒng)計(jì)工具(更新)
這篇文章主要為大家詳細(xì)介紹了python tkinter圖形界面代碼統(tǒng)計(jì)工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09