学习Python的ABC模块
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模块相关推荐
- python 彩票排列组合_对福彩3D号码进行排列组合为例学习Python的itertools模块的用法...
这里我们以对福彩3D号码进行排列组合为例学习Python的itertools模块的用法.首先我们选择心仪的号码.比如我们选择4,5,7,8 第一种我们只要组六的组合.代码如下 import itert ...
- Python的ABC模块
1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块.ABC是Abstract Base Class的缩写. 2.模块中的类和函数 abc.ABCMeta 这 ...
- 系统学习Python——进度条模块tqdm
分类目录:<系统学习Python>总目录 tqdm在阿拉伯语中是"进步"的意思(塔卡杜姆,تقدّم)并且是西班牙语中"我非常爱你"的缩写.在Pyt ...
- 学习Python中turtle模块的基本用法(3:学习绘图示例源码)
基于前面学习的turtle模块基本函数,在GitHub及其它网站中找到部分turtle绘制图形的示例,本文选取部分案例,学习案例源码,分析绘图思路,以巩固turtle基本函数的用法. 绘制爱心 ...
- 学习Python中turtle模块的基本用法(6:其它函数)
除了之前文章中介绍的turtle模块的绘图函数,本文从turtle帮助文档中梳理了其它绘图或状态函数,编写复杂的绘图函数时也用得到,函数清单如下表所示: 序号 函数名称 说明 1 turtle.h ...
- 学习Python中turtle模块的基本用法(5:绘制简笔画羊)
人已阳,准备画个喜羊羊纪念一下,但是喜羊羊头上的卷太多了,不太好画,于是找了参考文献1的普通的简笔画羊,使用Python中的turtle模块绘制(采用参考文献3中绘制云朵的代码绘制羊身体). ...
- Python之abc模块
abc:Abstract Base Classes 作用:在代码中定义和使用抽象基类进行API检查. 1. 为什么使用abc? Abstract base classes由一组接口组成,检查比hasa ...
- 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)
科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线 科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...
- python rpa_(RPA学习)Python 之 Pathlib 模块
原标题:(RPA学习)Python 之 Pathlib 模块 艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=li ...
最新文章
- MyEclipse Enterprise Workbench 9.0 破解及注册机 注册码
- mysql 指定日期条件求和_如何在mysql中按每个日期对字段进行求和-问答-阿里云开发者社区-阿里云...
- apt-get出现no public key available for the following key IDs
- 如何系统的自学python 知乎-应该怎样系统的学习Python标准库?
- 使用 MDT2008 轻量部署进行 Windows XP SP2 简单部署
- 如何搭建Electron开发环境
- 文件上传速度查询方法
- php函数clean(),wordpress函数clean_url()用法示例
- Now, using the touch-screen smartphone in your hand
- win10打开视频显示HEVC视频扩展
- im即时通讯软件app源码-仿微信-开发日记
- 华为OSN1500B故障应急处理
- 我们软件开发常用的协作工具
- oracle快速回收表空间,drop user cascade_快速回收表空间大小
- 推土机(快排)荷兰国旗思路
- [数学建模] 微分方程--捕鱼业的持续发展
- 计算机ppt总结,计算机基础课件总结.ppt
- word to pdf
- 蛋白质集合c语言算法,利用蛋白质序列的预测方法
- WEB前端 | HTML基础——(5)表格和表单