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的ABC模块

    http://yansu.org/2013/06/09/learn-python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...

  2. Python之abc模块

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

  3. Python:抽象基类(abc模块)

    抽象基类(abc模块) 介绍 白话理解 实用场景 介绍 该模块提供了一个元类 ABCMeta,可以用来定义抽象类,另外还提供一个工具类 ABC,可以用它以继承的方式定义抽象基类. 装饰器以" ...

  4. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  5. 【Python】Python学习----第一模块笔记

    1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...

  6. python的os模块批量获取目标路径下的文件名

    目前在做一个项目开发与变更专项稽核,但是所抽取的目标项目,样本所附电子版文件上千个,需要判断文档完整性,就需要所有文档名清单. python的os模块好像是对这块比较擅长,就去翻了下文档,试着写了,效 ...

  7. python安装os模块_python的os模块(ipython,文件,目录,权限,管理)

    什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...

  8. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西

    原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...

  9. python正则表达式——re模块

    参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...

最新文章

  1. Verilog 中输入输出信号的类型?
  2. 初学__Python——用包来管理多个模块
  3. 四十、ETL工具的输入步骤
  4. 临汾移动搜索引擎推广_竞价信息流移动搜索推广分析!
  5. xib中UIScrollView固定底部内容
  6. 利用Windows的启动机制实现拦截360的运行
  7. ubuntu firefox上看视频,安装flash啊
  8. 2018春江苏省计算机等级考试,2018年春季江苏省计算机等级考试报名通知
  9. 遥控器进入鼠标模式,退出鼠标模式,上下左右移动和确认
  10. 黑域助手连接服务器才能用吗,黑域怎么免root使用?root使用教程
  11. windows 2008下载地址及版本介绍
  12. VS下EXE可执行文件启动代码剖析(2)_mtinit函数
  13. 贝叶斯公式求解公园凉鞋问题
  14. android apk如何压缩包,Android 打包Apk太大 如何进行压缩APK文件
  15. 【码农说码】手撕锟斤拷,彻底搞懂GB2312,GBK,Big5,ASCII,UTF-8,UTF-32的前世今生
  16. 招标投标管理系统(毕业设计)
  17. 【css】渐变-背景渐变、边框渐变、文字渐变
  18. stm32实现波形发生器
  19. 如何正确地学习Java
  20. consul-esm介绍

热门文章

  1. Linux进程:父子进程
  2. Winamp 十周年纪念版 5.5 正式发布
  3. 12032.Nor-flash异常问题汇总
  4. 0.elasticsearch介绍
  5. 远程监控网络摄像头通用指南
  6. 解决无法从Windows商店下载Samsung Note
  7. 用python做计算器(低级版)
  8. 3721病毒杀除方法详解
  9. 全球与中国反刍动物饲料市场现状及未来发展趋势
  10. Ai challenger 2017 image caption小结