abc模块 / abc Module


在定义抽象方法时,为了在初始化阶段就检测是否对抽象方法进行了重定义,Python 提供了 abc 模块。

 from abc import ABCMeta, abstractmethod

 # Generate a abstract base obj - MyABC
class MyABC(metaclass=ABCMeta):
#__metaclass__ = ABCMeta
@abstractmethod
def run(self):
pass class Foo(MyABC):
def run(self):
print('run') f = Foo()
f.run()

第 4 行:生成一个抽象的基类 MyABC,这其中利用了 metaclass 元类的相关用法

第 6-7 行:抽象方法装饰器,抽象方法可以不执行任何程序,但是子类中必须重定义这个函数

第 10 行:定义 MyABC 的子类 Foo,此时若 Foo 中没有定义 run 方法,则在运行前便会产生报错,而不是等到运行后才报错

Note: abc.ABCMeta 这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。

相关阅读


1. 抽象方法
2. 装饰器

参考链接


http://blog.csdn.net/igorzhang/article/details/39026885

最新文章

  1. ASP.NET TextBox 当鼠标点击后清空默认提示文字[转]
  2. 数据持久化以及DAO模式的简单使用
  3. hibernate的缓存机制
  4. 细菌觅食算法-python实现
  5. 2. Basic environment configuration
  6. 在美国看中国HTML5市场的发展
  7. gsoap框架下的onvif程序流程分析
  8. 常用linux命令和配置
  9. IO.Path路径
  10. delphi下实现控制其它窗体中的控件代码模板(delphi 7安装程序)
  11. spring boot整合shiro
  12. php 中 global 与 $GLOBAL 的区别
  13. erlang并发编程
  14. Gurobi在Python环境里安装与使用(Windows环境)
  15. 加入EOS主网
  16. CentOS下yum命令详解
  17. 关于Struts2的文件上传
  18. Ordering Tasks 拓扑排序
  19. Linux学习2-Linux分区方式
  20. Report_Report Builder的一些基本概念(概念)

热门文章

  1. 前端初学者——初探Modernizr.js Modernizr.js笔记
  2. SqlHelper——数据库小助手
  3. 火焰图还有perf
  4. POJ 3304 Segments | 线段相交
  5. 公路建设 (highway.c/cpp/pas)
  6. 【CF Edu 28 B. Math Show】
  7. ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)
  8. Codeforces:Good Bye 2018(题解)
  9. SICAU-OJ: 数字游戏
  10. 如何在Windows2008中禁用IPv6