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实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python 列表list使用介绍
Nov 30 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
Python编程中flask的简介与简单使用
Dec 28 Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 Python
Python文件路径名的操作方法
Oct 30 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
python cv2图像质量压缩的算法示例
Jun 04 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中var_export与var_dump的区别分析
2010/08/21 PHP
php使用session二维数组实例
2014/11/06 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python中new方法的详解
2019/01/15 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python GUI模拟实现计算器
2020/06/22 Python
面向对象设计的原则是什么
2013/02/13 面试题
先进个人事迹材料
2014/01/25 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
小班评语大全
2014/05/04 职场文书
学习计划是什么
2019/04/30 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Redis数据同步之redis shake的实现方法
2022/04/21 Redis