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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python 判断网络连通的实现方法
Apr 22 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Django组件content-type使用方法详解
Jul 19 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
感知器基础原理及python实现过程详解
Sep 30 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python中turtle库的简单使用教程
Nov 11 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 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中单双引号的误区和双引号小隐患
2016/07/19 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
js下拉菜单语言选项简单实现
2013/09/23 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
django使用JWT保存用户登录信息
2020/04/22 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
项目施工员岗位职责
2014/03/09 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
小英雄雨来观后感
2015/06/09 职场文书
单位更名证明
2015/06/18 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL