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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python字符串处理函数简明总结
Apr 13 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
python 自动去除空行的实例
Jul 24 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
python实现XML解析的方法解析
Nov 16 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 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
第十四节--命名空间
2006/11/16 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
Web开发之JavaScript
2012/03/29 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
Python版微信红包分配算法
2015/05/04 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
银行员工考核评语
2014/12/31 职场文书
求职自我评价怎么写
2015/03/09 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
办公室卫生管理制度
2015/08/04 职场文书
保护环境建议书作文500字
2015/09/14 职场文书