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从ftp下载数据保存实例
Nov 20 Python
python套接字流重定向实例汇总
Mar 03 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
Python3计算三角形的面积代码
Dec 18 Python
Python 通过打码平台实现验证码的实现
May 13 Python
Python函数和模块的使用总结
May 20 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
33个Python爬虫项目实战(推荐)
Jul 08 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
基于Python模拟浏览器发送http请求
Nov 06 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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调用数据库的存贮过程
2006/10/09 PHP
global.php
2006/12/09 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
python3.x上post发送json数据
2018/03/04 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
存储过程和函数的区别
2013/05/28 面试题
便利店投资的创业计划书
2014/01/12 职场文书
员工工作表扬信范文
2014/01/13 职场文书
优秀教师事迹简介
2014/02/02 职场文书
《锄禾》教学反思
2014/04/08 职场文书
庆七一活动总结
2014/08/27 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
重阳节标语大全
2014/10/07 职场文书
就业推荐表导师评语
2014/12/31 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP