博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之抽象类、抽象方法
阅读量:7137 次
发布时间:2019-06-28

本文共 1412 字,大约阅读时间需要 4 分钟。

抽象类中只能有抽象方法,子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。

Python2

class CopyBase(object):    def save(self):        raise NotImplementedErrorclass CopyPaper(CopyBase):    def __init__(self):        pass    def save(self):        print("copy paper")class CopyQuestion(CopyBase):    def __init__(self):        passcopy_paper = CopyPaper()copy_paper.save()copy_question = CopyQuestion()copy_question.save()result:copy paperTraceback (most recent call last):    copy_question.save()    raise NotImplementedErrorNotImplementedError

这里以NotImplementedError的形式实现了抽象类和抽象方法,如果子类不实现该方法会抛出异常

 

Python3

在Python3中引入了abc模块,通过@abc.abstractmethod可以更加简洁地使用抽象类,抽象方法。

import abcclass CopyBase(metaclass=abc.ABCMeta):    @abc.abstractmethod    def save(self):        passclass CopyPaper(CopyBase):    def __init__(self):        pass    def save(self):        print("copy paper")class CopyQuestion(CopyBase):    def __init__(self):        passcopy_paper = CopyPaper()copy_paper.save()copy_question = CopyQuestion()copy_question.save()result:copy paperTraceback (most recent call last):    copy_question = CopyQuestion()TypeError: Can't instantiate abstract class CopyQuestion with abstract methods save

从abc模块引入类abstractmethod和类ABCMeta,自定义的CopyBase类继承抽象类ABCMeta,在类CopyBase中定义save方法,

添加装饰器abcstractmethod,CopyPaper类和CopyQuestion继承CopyBase类,分别实例化CopyPaper和CopyQuestion,

CopyQuestion类没有实现save方法,因此会抛出异常。

转载于:https://www.cnblogs.com/FG123/p/9463673.html

你可能感兴趣的文章
.NET分布式事务处理(转)
查看>>
当一个项目中同时存在webroot和webcontext时
查看>>
在Java中打开浏览器
查看>>
取一种类型里面的产品销售前3甲的数据Sql
查看>>
索引初探(二)
查看>>
linux 打造man中文帮助手册
查看>>
[数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式
查看>>
Android 最火框架XUtils之注解机制详解
查看>>
spring4.x注解概述
查看>>
Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员...
查看>>
C++序列化、反序列化
查看>>
Mysql学习笔记(七)查(补充)
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.5
查看>>
自然科学与社会科学的区别
查看>>
访问者模式
查看>>
Hadoop: MapReduce2的几个基本示例
查看>>
javascript客户端检测技术
查看>>
16款纯CSS3实现的loading加载动画
查看>>
[工程备案]linux基本命令以及C和C++编程
查看>>
多项式回归
查看>>