返回顶部
首页 > 资讯 > 后端开发 > Python >Python抽象类应用详情
  • 464
分享到

Python抽象类应用详情

2024-04-02 19:04:59 464人浏览 独家记忆

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

摘要

目录一、问题场景二、使用抽象类思想解决1、错误写法 2、改进写法 3、继续优化三、使用抽象类的注意事项抽象类作用:抽象类就是控制子类的方法的名称,要求子类必须按照

抽象类作用:抽象类就是控制子类的方法的名称,要求子类必须按照父类的要求的实现指定的方法,且方法名要和父类保持一致

一、问题场景

主要使用场景是这样的

比如京东上买东西,买完东西后需要支付,京东可以使用支付宝进行支付,也可以通过微信支付,也可以通过京东白条支付,也可以通过apppay支付,

每种支付需要走内部的流程。

支付的统一入口是京东,但是点击不同的支付,需要走不同的流程,京东这边的流程就需要调用不同的函数;

那统一入口这里的调用起来就会比较麻烦

class Ali(object):
    def alipay(self):
        pass
class Ten(object):
    def tenpay(self):
        pass
class App(object):
    def apppay(self):
        pass

都是一个支付,阿里的支付、腾讯的支付、苹果的支付方法名都不一样、

二、使用抽象类思想解决

此时我们就可以引入python中的抽线类

首先需要引入2个模块:

from abc import ABCMeta
from abc import abstractmethod

实现代码如下:

1、错误写法 

from abc import ABCMeta
from abc import abstractmethod
 
# Payclass就是一个抽象类
class Pay(metaclass=ABCMeta):
    @abstractmethod
    def pay(self):
        # 定义支付的基础接口
        pass
class AliPay(Pay):
    def ali_pay(self):
        print("这是支付宝支付")
class WetPay(Pay):
    def wet_pay(self):
        print("这是微信支付")
class HuaweiPay(Pay):
    def hua_pay(self):
        print("这是华为支付")

比如我们没有按照要求实例化pay这个方法,执行代码会抛错

2、改进写法 

那我们就按照要求修改代码即可,这次实例化就不会抛错:

from abc import ABCMeta, abstractmethod
class Pay(metaclass=ABCMeta):
    @abstractmethod
    def pay(self):
        # 定义支付的基础接口
        pass
class AliPay(Pay):
    def pay(self):
        print("这是支付宝支付")
class WetPay(Pay):
    def pay(self):
        print("这是微信支付")
class HuaweiPay(Pay):
    def pay(self):
        print("这是华为支付")
AliPay().pay()

执行可成功,结果如下:

3、继续优化

以在定义一个函数,搭配抽线类来实现,这个的第一个参数就是每个支付的实例,另外一个参数就是每个支付需要的参数

def pay(obj,*args,**kwargs):
    obj.pay(*args,**kwargs)

详情如下:

from abc import ABCMeta, abstractmethod
class Pay(metaclass=ABCMeta):
    @abstractmethod
    def pay(self):
        # 定义支付的基础接口
        pass
class AliPay(Pay):
    def pay(self, *args, **kwargs):
        print("这是支付宝支付{0}".fORMat(args[0]))
class WetPay(Pay):
    def pay(self, *args, **kwargs):
        print("这是微信支付{0}".format(args[0]))
class HuaweiPay(Pay):
    def pay(self, *args, **kwargs):
        print("这是华为支付{0}".format(args[0]))
def pay(obj, *args, **kwargs):
    obj.pay(*args, **kwargs)
if __name__ == "__main__":
    ali_pay = AliPay()
    wet_apy = WetPay()
    pay(ali_pay, 100)
    pay(wet_apy, 1000)

三、使用抽象类的注意事项

  • 1、抽象类不能被实例化
  • 2、子类需要严格遵守父类的抽象类的规则,而孙类不需要遵守这个规则
  • 3、如果想使用抽象类,则该类只需要继承抽象类即可

到此这篇关于Python抽象类应用详情的文章就介绍到这了,更多相关Python抽象类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python抽象类应用详情

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

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

猜你喜欢
  • Python抽象类应用详情
    目录一、问题场景二、使用抽象类思想解决1、错误写法 2、改进写法 3、继续优化三、使用抽象类的注意事项抽象类作用:抽象类就是控制子类的方法的名称,要求子类必须按照...
    99+
    2024-04-02
  • Java抽象类和接口的区别详情
    1、抽象类 vs 接口  方法类型: 接口只能有抽象方法。抽象类可以有抽象和非抽象方法。从 Java 8 开始,它也可以有默认和静态方法。 最终变量: 在 Java...
    99+
    2024-04-02
  • Scala抽象类怎么应用
    这篇文章主要讲解了“Scala抽象类怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala抽象类怎么应用”吧!1抽象类的定义定义一个抽象类:如果某个类至少存在一个抽象方法或一个抽象...
    99+
    2023-06-02
  • Java抽象类详解
    抽象类 抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如: 说明 1.矩形,三角形,圆形都...
    99+
    2023-09-23
    java 开发语言
  • 在Python中定义和使用 抽象类及抽象
    原文链接:http://www.jb51.net/article/87710.htm 本文根据自己的理解和思考,对原文略有改动。。。 Python中我们可以使用abc模块来构建抽象类。在讲抽象类之前,先说下抽象方法的实现。 抽象方法是基类...
    99+
    2023-01-31
    抽象 定义 抽象类
  • 一文详解Java抽象类到底有多抽象
    目录抽象类1.引出抽象类2.认识抽象类接口1.抽象类和接口的区别2.认识接口3.具体实现USB接口接口表示能力抽象类 1.引出抽象类 向上转型带来的最大的好处就是参数统一化,使用共同...
    99+
    2024-04-02
  • python抽象类的使用方法
    这篇文章主要介绍了python抽象类的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、问题描述主要使用场景是这样的比如京东上买东西,买完东西后需要支付,京东可以使用...
    99+
    2023-06-08
  • Java 抽象类详细讲解
    目录 Java抽象类概念 Java抽象类示例 继承Animal类的子类的示例 Java抽象类详细使用方法 1、定义抽象类 2、继承抽象类 3、实现抽象方法 4、完整示例代码 Java抽象类概念 Java中抽象类是指用abstract关键...
    99+
    2023-09-04
    java jvm 开发语言 javase 面向对象
  • Java抽象类(基础详解)
    目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容...
    99+
    2023-10-21
    java 开发语言
  • 一文详解Object类和抽象类
    目录一、抽象类是什么?二、初始抽象类2.1 基本语法2.2 继承抽象类三、抽象类总结四、Object类4.1 初始Object4.2 toString4.3 equals4.4 ha...
    99+
    2024-04-02
  • python抽象类的作用是什么
    Python中的抽象类是一种特殊的类,不能直接实例化,主要用于定义接口和规范子类的行为。 抽象类的作用如下: 定义接口:抽象类可...
    99+
    2023-10-25
    python
  • Python中的接口类与抽象类
    面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能...
    99+
    2023-01-31
    接口 抽象类 Python
  • 详解Android中的Context抽象类
    关于Context我们首先应该知道: (1)它描述的是一个应用程序环境的信息,即上下文。 (2)该类是一个抽象(abstract class)类,Android提供了该抽象类的...
    99+
    2022-06-06
    context Android
  • JAVA抽象类,接口,内部类详解
    目录一.内容抽象类抽象方法与抽象类抽象类的使用接口接口的概念接口的定义接口中的成员变量接口中的方法接口的继承接口的实现/使用接口与抽象类的差异面向接口编程内部类非静态内部类静态内部类...
    99+
    2024-04-02
  • JAVA抽象类和抽象方法怎么使用
    在Java中,抽象类是用来定义一组相关类的共同特征和行为的。抽象类不能被实例化,只能被继承。要定义一个抽象类,需要在类的声明前加上关...
    99+
    2023-08-17
    JAVA
  • Python Ast抽象语法树的介绍及应用详解
    目录引言1. AST简介 2. 创建AST2.1 Compile函数2.2 生成ast 3. 遍历AST3.1 ast.NodeTransfer3.2 ast.N...
    99+
    2024-04-02
  • 深入解读PHP抽象类abstract的应用
    PHP中的抽象类(abstract class)是一种特殊的类,它不能被实例化,只能被继承。抽象类为其他类提供了一种通用的、抽象的模...
    99+
    2023-09-23
    PHP
  • Golang函数的抽象类型应用方法
    Golang是目前非常流行的一种程序语言,一大特点就是其简洁、高效、跨平台、易学等优势。这个语言集成了许多现代化编程语言的高科技特征,最近几年来更是备受开发人员的追捧。其中Golang的抽象类型应用方法对于开发人员来说相当重要,本文将主要讲...
    99+
    2023-05-16
    Golang 抽象类型 应用方法
  • VB.NET抽象类怎么用
    这篇文章给大家分享的是有关VB.NET抽象类怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建抽象类对抽象类的定义很简单,只要在定义域里加入关键字MustInherit,如:Public Must...
    99+
    2023-06-17
  • Golang中的抽象类使用方法详解
    Golang中的抽象类使用方法详解 在Go语言中,并没有传统意义上的抽象类和接口继承的概念,但是可以通过结构体嵌套和接口组合来实现类似的功能。本文将详细介绍如何在Golang中实现类似...
    99+
    2024-03-14
    方法 golang 抽象类 go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作