Python编程中NotImplementedError的使用方法

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

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

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


In [1]:
class ClassDemo:
    def test_demo(self):
        print('如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好。')
        raise NotImplementedError("my test: not implemented!此处应当使用NotImplementedError")
        pass


class ChildClass1(ClassDemo):
    def test_demo(self):
        print('子类实现,就不会报错。')
        pass

class ChildClass2(ClassDemo):
    pass

In [2]:
# 子类实现,就不会报错。
inst =ChildClass1()
inst.test_demo()


子类实现,就不会报错。

In [3]:
# 不实现的时候会导致问题
inst =ChildClass2()
inst.test_demo()


如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好。
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-3-9e1586610468> in <module>
      1 # 不实现的时候会导致问题
      2 inst =ChildClass2()
----> 3 inst.test_demo()

<ipython-input-1-5a995deca682> in test_demo(self)
      2     def test_demo(self):
      3         print('如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好。')
----> 4         raise NotImplementedError("my test: not implemented!此处应当使用NotImplementedError")
      5         pass
      6 

NotImplementedError: my test: not implemented!此处应当使用NotImplementedError