广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的接口类与抽象类
  • 567
分享到

Python中的接口类与抽象类

接口抽象类Python 2023-01-31 06:01:58 567人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能

面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。
所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能~
 
接口继承可以使得外部调用者无需关心具体的实现细节,可用相同的方式处理继承了特定接口的所有对象,这里的前提是接口类需要做出一个很好的抽象~

class Operate_database():    # 接口类
    def query(self, sql):
        raise NotImplementedError

    def update(self, sql):
        raise NotImplementedError

class Operate_Mysql(Operate_database):
    def query(self, sql):
        print('query mysql : %s' % sql)

    def update(self, sql):
        print('query mysql : %s' % sql)

class Operate_pg(Operate_database):
    def query(self, sql):
        print('query postgresql : %s' % sql)

    def update(self, sql):
        print('update postgresql : %s' % sql)

def query_data(operate_obj, sql):
    operate_obj.query(sql)

def update_data(operate_obj, sql):
    operate_obj.update(sql)

query_data(Operate_mysql(), 'select ...')    # query mysql : select ...
update_data(Operate_pg(), 'update...')    # update postgresql : update...

若现在子类继承了Operate_database 类,但是没有实现某一个方法的功能,调用时就会报错~

class Operate_oracle(Operate_database):
    # 没有实现 query 方法
    def update(self, sql):
        print('update oracle : %s' % sql)

def query_data(operate_obj, sql):
    operate_obj.query(sql)

query_data(Operate_oracle(), 'select ...')   # NotImplementedError

 
子类覆盖父类中的方法时,要注意方法名需要与父类中的方法名相同,且方法的参数个数与参数名也要相同~
这里更好的方式是通过 abc模块 来实现接口~

from abc import ABCMeta,abstractmethod

class Operate_database(metaclass=ABCMeta):    # 接口类
    @abstractmethod
    def query(self, sql):
        pass

    @abstractmethod
    def update(self, sql):
        pass

class Operate_oracle(Operate_database):
    # 没有实现 query 方法
    def update(self, sql):
        print('update oracle : %s' % sql)

def query_data(operate_obj, sql):
    operate_obj.query(sql)

oracle = Operate_oracle()        # 由于没有实现接口中的所有方法,在这一步就会报错
query_data(oracle, 'select ...')

抽象类和接口类一样是一种规范,规定子类应该具备的功能。
python中,抽象类和接口类没有明确的界限。若是类中所有的方法都没有实现,则认为这是一个接口,若是有部分方法实现,则认为这是一个抽象类。抽象类和接口类都仅用于被继承,不能被实例化~

from abc import ABCMeta,abstractmethod

class Operate_database(metaclass=ABCMeta):    # 抽象类

    log_path = '/tmp/db.log'

    def connect(self):
        print('connect db ...')

    @abstractmethod
    def query(self, sql):
        pass

    @abstractmethod
    def update(self, sql):
        pass

抽象类就是从一堆类中抽取相同的内容,这些内容包括数据属性和函数属性。上述示例中可以看到,抽象类中对部分方法进行了实现~
 
其实 Python 原生仅支持抽象类,不支持接口类。abc模块就是用来实现抽象类的,当一个抽象类中所有的方法都没有实现时,那就认为这是一个接口类了~

.................^_^

--结束END--

本文标题: Python中的接口类与抽象类

本文链接: https://www.lsjlt.com/news/189512.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中的接口类与抽象类
    面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能...
    99+
    2023-01-31
    接口 抽象类 Python
  • 【JAVA】抽象类与接口
    作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将ja...
    99+
    2023-09-08
    java 开发语言
  • 【JAVA】抽象类与接口--下
    ⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 Ǵ...
    99+
    2023-09-03
    java 开发语言
  • java中抽象类、抽象方法、接口与实现接口实例详解
    前言对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的的啦(不要误会,我指的只是我自己啦啦...
    99+
    2023-05-30
    java 抽象类 接口
  • Java中的抽象类和接口
    目录 一、什么是抽象类 抽象类在实现多态中的意义  二、接口是什么  通过接口实现多态 三、抽象类和接口的区别  各位铁汁们大家好呀😊! 😎今天让我们继续学习java,看看java中的抽象类和接口到底是什么...
    99+
    2023-08-31
    java Java接口 抽象类与多态
  • JAVASE---抽象类和接口
    抽象类 抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类语法 在Java中,一个类如果被 abst...
    99+
    2023-09-21
    java 开发语言
  • java中抽象类与接口的图文演示
    首先看图:抽象方法: 没有方法体的方法、必须在与抽象类中、被abstract修饰的方法。抽象类可以存在抽象方法,可以存在普通方法抽象类不能实例化抽象方法必须被重写抽象类的使用:1)具体子类:重写所有的抽象方法+按需新增2)抽象子类:按需重写...
    99+
    2016-11-10
    java入门 java 抽象类 接口
  • Java中比较抽象类与接口的异同
    目录一.抽象类(一)概念(二)抽象类和抽象方法(三)使用抽象类的意义二.接口(一)概念(二)语法三.比较抽象类与接口Q: 为什么有了抽象类还要接口? Q: 如何确定在什么情况下应该使...
    99+
    2022-11-12
  • Java抽象类与接口怎么掌握
    本文小编为大家详细介绍“Java抽象类与接口怎么掌握”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java抽象类与接口怎么掌握”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。abstractabstract介绍:...
    99+
    2023-06-30
  • Java抽象类与接口实例分析
    这篇“Java抽象类与接口实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java抽象类与接口实例分析”文章吧。1.抽...
    99+
    2023-06-30
  • JAVA接口与抽象类怎么使用
    本篇内容介绍了“JAVA接口与抽象类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口概述当需要从几个类中派生出一个类,继承他们所有...
    99+
    2023-07-02
  • Java接口的继承与抽象类介绍
    这篇文章主要讲解了“Java接口的继承与抽象类介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java接口的继承与抽象类介绍”吧!在实施接口中,我们利用interface语法,将inter...
    99+
    2023-06-02
  • java中接口与抽象类有什么不同
    今天就跟大家聊聊有关java中接口与抽象类有什么不同,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。详解java中接口与抽象类的区别  1.abstract class 在 Java ...
    99+
    2023-05-30
    java
  • Java中接口与抽象类的区别是什么
    本篇文章为大家展示了Java中接口与抽象类的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体...
    99+
    2023-05-31
    java 别是 ava
  • java中的接口与抽象类有什么区别
    java中的接口与抽象类有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 中接口和抽象类的区别与对比接口和抽象类的概念不一样。 接口是对动作的抽象,抽象类是对根...
    99+
    2023-05-31
    java ava
  • Java入门基础之抽象类与接口
    目录一.抽象类1.什么是抽象类2.语法规则3.抽象类的作用二.接口1.什么是接口2.语法规则3.实现多个接口4.接口之间的继承三.接口的使用实例1. Comparable 接口2.C...
    99+
    2022-11-13
  • java抽象类与接口的区别有哪些
    一、抽象类在Java中,被关键字abstract修饰的类称为抽象类;被abstract修饰的方法称为抽象方法,抽象方法只有方法声明没有方法体。抽象类有以下几个特点:抽象类不能被实例化,只能被继承。包含抽象方法的类一定是抽象类,但抽象类不一定...
    99+
    2019-10-06
    java入门 java 抽象类 接口 区别
  • day 25-1 接口类、抽象类、多态
    # 接口类:python 原生不支持# 抽象类:python 原生支持的 接口类 首先我们来看一个支付接口的简单例子 from abc import abstractmethod,ABCMeta #我们也可以创建一个规范类 class ...
    99+
    2023-01-30
    接口 多态 抽象类
  • JAVA抽象类,接口,内部类详解
    目录一.内容抽象类抽象方法与抽象类抽象类的使用接口接口的概念接口的定义接口中的成员变量接口中的方法接口的继承接口的实现/使用接口与抽象类的差异面向接口编程内部类非静态内部类静态内部类...
    99+
    2022-11-12
  • Java中抽象类和接口介绍
    目录1、抽象类1.1 什么是抽象类?1.2 抽象类属于什么类型?1.3 抽象类怎么定义?1.4 抽象方法2、接口2.1 关于接口2.2 接口怎么定义?2.3 接口基础语法总结1、抽象...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作