python def demo_Python编程中NotImplementedError的使用方法

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

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 ,`__all__` 是一个特殊变量,用于指定模块哪些对象应该被导入。具体来说,`__all__` 是一个列表,包含了当前模块所有公开的对象的名称,也就是说这些对象可以被其他模块通过 `from module import *` 的方式导入。 如果在一个模块没有定义 `__all__`,那么默认情况下,所有以单下划线 `_` 开头的对象都不会被导入。而如果定义了 `__all__`,那么只有在 `__all__` 列出的对象才会被导入。另外,如果 `__all__` 列出的对象不存在,或者是以单下划线 `_` 开头的对象,则会导致 `ImportError` 异常。 下面是一个简单的示例,演示了如何使用 `__all__` 来控制模块对象的导入: ```python # demo.py def func1(): pass def func2(): pass def _func3(): pass __all__ = ['func1', 'func2'] # main.py from demo import * func1() # 正常运行 func2() # 正常运行 _func3() # NameError: name '_func3' is not defined ``` 在上面的示例,`demo.py` 定义了三个函数,其 `_func3()` 是以单下划线 `_` 开头的,表示这个函数是模块内部使用的,不应该被其他模块导入。`__all__` 变量定义了模块公开的对象名称,只有 `func1` 和 `func2` 在其,因此只有这两个函数可以被其他模块导入。在 `main.py` 使用 `from demo import *` 的方式导入了模块的所有公开对象,可以看到 `_func3()` 无法被访问,因为它不在 `__all__`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值