http://yansu.org/2013/06/09/learn-python-abc-module.html

1.abc模块作用

Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。ABC是Abstract Base Class的缩写。

2.模块中的类和函数

abc.ABCMeta

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

from abc import ABCMetaclass MyABC:__metaclass__ = ABCMetaMyABC.register(tuple)assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)

上面这个例子中,首先生成了一个MyABC的抽象基础类,然后再将tuple变成它的虚拟子类。然后通过issubclass或者isinstance都可以判断出tuple是不是出于MyABC类。

另外,也可以通过复写__subclasshook__(subclass)来实现相同功能,它必须是classmethod

class Foo(object):def __getitem__(self, index):...def __len__(self):...def get_iterator(self):return iter(self)class MyIterable:__metaclass__ = ABCMeta@abstractmethoddef __iter__(self):while False:yield Nonedef get_iterator(self):return self.__iter__()@classmethoddef __subclasshook__(cls, C):if cls is MyIterable:if any("__iter__" in B.__dict__ for B in C.__mro__):return Truereturn NotImplementedMyIterable.register(Foo)

abc.abstractmethod(function)

表明抽象方法的生成器

class C:__metaclass__ = ABCMeta@abstractmethoddef my_abstract_method(self, ...):...

abc.abstractproperty([fget[,fset[,fdel[,doc]]]])

表明一个抽象属性

class C:__metaclass__ = ABCMeta@abstractpropertydef my_abstract_property(self):...

上例只是只读属性,如果是读写属性,可以如下:

class C:__metaclass__ = ABCMetadef getx(self): ...def setx(self, value): ...x = abstractproperty(getx, setx)


学习Python的ABC模块相关推荐

  1. python 彩票排列组合_对福彩3D号码进行排列组合为例学习Python的itertools模块的用法...

    这里我们以对福彩3D号码进行排列组合为例学习Python的itertools模块的用法.首先我们选择心仪的号码.比如我们选择4,5,7,8 第一种我们只要组六的组合.代码如下 import itert ...

  2. Python的ABC模块

    1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块.ABC是Abstract Base Class的缩写. 2.模块中的类和函数 abc.ABCMeta 这 ...

  3. 系统学习Python——进度条模块tqdm

    分类目录:<系统学习Python>总目录 tqdm在阿拉伯语中是"进步"的意思(塔卡杜姆,تقدّم)并且是西班牙语中"我非常爱你"的缩写.在Pyt ...

  4. 学习Python中turtle模块的基本用法(3:学习绘图示例源码)

      基于前面学习的turtle模块基本函数,在GitHub及其它网站中找到部分turtle绘制图形的示例,本文选取部分案例,学习案例源码,分析绘图思路,以巩固turtle基本函数的用法. 绘制爱心   ...

  5. 学习Python中turtle模块的基本用法(6:其它函数)

      除了之前文章中介绍的turtle模块的绘图函数,本文从turtle帮助文档中梳理了其它绘图或状态函数,编写复杂的绘图函数时也用得到,函数清单如下表所示: 序号 函数名称 说明 1 turtle.h ...

  6. 学习Python中turtle模块的基本用法(5:绘制简笔画羊)

      人已阳,准备画个喜羊羊纪念一下,但是喜羊羊头上的卷太多了,不太好画,于是找了参考文献1的普通的简笔画羊,使用Python中的turtle模块绘制(采用参考文献3中绘制云朵的代码绘制羊身体).    ...

  7. Python之abc模块

    abc:Abstract Base Classes 作用:在代码中定义和使用抽象基类进行API检查. 1. 为什么使用abc? Abstract base classes由一组接口组成,检查比hasa ...

  8. 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)

      科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线   科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...

  9. python rpa_(RPA学习)Python 之 Pathlib 模块

    原标题:(RPA学习)Python 之 Pathlib 模块 艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=li ...

最新文章

  1. MyEclipse Enterprise Workbench 9.0 破解及注册机 注册码
  2. mysql 指定日期条件求和_如何在mysql中按每个日期对字段进行求和-问答-阿里云开发者社区-阿里云...
  3. apt-get出现no public key available for the following key IDs
  4. 如何系统的自学python 知乎-应该怎样系统的学习Python标准库?
  5. 使用 MDT2008 轻量部署进行 Windows XP SP2 简单部署
  6. 如何搭建Electron开发环境
  7. 文件上传速度查询方法
  8. php函数clean(),wordpress函数clean_url()用法示例
  9. Now, using the touch-screen smartphone in your hand
  10. win10打开视频显示HEVC视频扩展
  11. im即时通讯软件app源码-仿微信-开发日记
  12. 华为OSN1500B故障应急处理
  13. 我们软件开发常用的协作工具
  14. oracle快速回收表空间,drop user cascade_快速回收表空间大小
  15. 推土机(快排)荷兰国旗思路
  16. [数学建模] 微分方程--捕鱼业的持续发展
  17. 计算机ppt总结,计算机基础课件总结.ppt
  18. word to pdf
  19. 蛋白质集合c语言算法,利用蛋白质序列的预测方法
  20. WEB前端 | HTML基础——(5)表格和表单

热门文章

  1. 阀门厂家是这样批量管理vps的
  2. SSM毕设项目羽毛球场预约系统axx7m(java+VUE+Mybatis+Maven+Mysql)
  3. discuz论坛数据库结构
  4. AVX指令集加速矩阵乘法
  5. Win10专业版激活步骤
  6. MyBioSource 小鼠细胞角蛋白单克隆抗体
  7. TRIZ系列-创新原理-36-状态转变原理
  8. LevelDb(一):LevelDb简介
  9. Sun宣布裁员6000人 软件业务重组分三部分
  10. html文字水平距左侧距离,html怎么设置左边距