Python的ABC模块
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的ABC模块
http://yansu.org/2013/06/09/learn-python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...
- Python之abc模块
abc:Abstract Base Classes 作用:在代码中定义和使用抽象基类进行API检查. 1. 为什么使用abc? Abstract base classes由一组接口组成,检查比hasa ...
- Python:抽象基类(abc模块)
抽象基类(abc模块) 介绍 白话理解 实用场景 介绍 该模块提供了一个元类 ABCMeta,可以用来定义抽象类,另外还提供一个工具类 ABC,可以用它以继承的方式定义抽象基类. 装饰器以" ...
- python sys模块作用_浅谈Python中的模块
模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...
- 【Python】Python学习----第一模块笔记
1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...
- python的os模块批量获取目标路径下的文件名
目前在做一个项目开发与变更专项稽核,但是所抽取的目标项目,样本所附电子版文件上千个,需要判断文档完整性,就需要所有文档名清单. python的os模块好像是对这块比较擅长,就去翻了下文档,试着写了,效 ...
- python安装os模块_python的os模块(ipython,文件,目录,权限,管理)
什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...
- 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...
- python正则表达式——re模块
参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...
最新文章
- Verilog 中输入输出信号的类型?
- 初学__Python——用包来管理多个模块
- 四十、ETL工具的输入步骤
- 临汾移动搜索引擎推广_竞价信息流移动搜索推广分析!
- xib中UIScrollView固定底部内容
- 利用Windows的启动机制实现拦截360的运行
- ubuntu firefox上看视频,安装flash啊
- 2018春江苏省计算机等级考试,2018年春季江苏省计算机等级考试报名通知
- 遥控器进入鼠标模式,退出鼠标模式,上下左右移动和确认
- 黑域助手连接服务器才能用吗,黑域怎么免root使用?root使用教程
- windows 2008下载地址及版本介绍
- VS下EXE可执行文件启动代码剖析(2)_mtinit函数
- 贝叶斯公式求解公园凉鞋问题
- android apk如何压缩包,Android 打包Apk太大 如何进行压缩APK文件
- 【码农说码】手撕锟斤拷,彻底搞懂GB2312,GBK,Big5,ASCII,UTF-8,UTF-32的前世今生
- 招标投标管理系统(毕业设计)
- 【css】渐变-背景渐变、边框渐变、文字渐变
- stm32实现波形发生器
- 如何正确地学习Java
- consul-esm介绍