python抽象基类用法实例分析


Posted in Python onJune 04, 2015

本文实例讲述了python抽象基类用法。分享给大家供大家参考。具体如下:

定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeata),和装饰器 @abstractmethod, @abstractproperty
如果要实例化继承了Foo 的子类,子类必须实现了Foo所有的抽象方法(跟java一样),否则实例化报错。
抽象类不能直接实例化

#!coding=utf-8
from abc import ABCMeta, abstractmethod, abstractproperty
class Foo:
  __metaclass__ = ABCMeta
  @abstractmethod
  #在python3.0中 使用 class Foo(metaclass=ABCMeta)语法
  def spam(self, a, b):
    pass
  @abstractproperty
  def name(self):
    pass
class Bar(Foo):
  def spam(self, a, b):
    print a, b
  def name():
    pass
b = Bar()
b.spam(1,2)

抽象基类支持对已经存在的类进行注册,使其属于该基类,使用register()方法
向抽象基类注册某个类,对于注册类中的实例,涉及后续基类的类检测操作比如(isinstance, issubclass) 将返回True,向抽象基类注册某个类时,不会检查该类是否实现了任何抽象方法或特性,这种注册过程只会影响类型检查

class Crok(object):
  def spam(self, a, c):
    print "gork.span"
Foo.register(Grok)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
用实例说明python的*args和**kwargs用法
Nov 01 Python
python实现SMTP邮件发送功能
Jun 16 Python
python实现外卖信息管理系统
Jan 11 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
Python中一些深不见底的“坑”
Jun 12 Python
Python代码太长换行的实现
Jul 05 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
利用python中集合的唯一性实现去重
Feb 11 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
python基于multiprocessing的多进程创建方法
Jun 04 #Python
python中管道用法入门实例
Jun 04 #Python
Python实现处理管道的方法
Jun 04 #Python
python定时器(Timer)用法简单实例
Jun 04 #Python
python避免死锁方法实例分析
Jun 04 #Python
python中字符串前面加r的作用
Jun 04 #Python
python生成器generator用法实例分析
Jun 04 #Python
You might like
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
J2EE包括哪些技术
2016/11/25 面试题
新闻专业个人自我评价
2013/09/21 职场文书
安全生产承诺书
2014/03/26 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
公司安全管理制度范本
2015/08/05 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android