欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python抽象類應用詳情

 更新時間:2022年04月26日 09:11:52   作者:勿忘--前行  
這篇文章主要介紹了Python抽象類應用詳情,抽象類就是控制子類的方法的名稱,要求子類必須按照父類的要求的實現(xiàn)指定的方法,且方法名要和父類保持一致,下文更多相關(guān)介紹需要的小伙伴可以參考一下

抽象類作用:抽象類就是控制子類的方法的名稱,要求子類必須按照父類的要求的實現(xiàn)指定的方法,且方法名要和父類保持一致

一、問題場景

主要使用場景是這樣的

比如京東上買東西,買完東西后需要支付,京東可以使用支付寶進行支付,也可以通過微信支付,也可以通過京東白條支付,也可以通過apppay支付,

每種支付需要走內(nèi)部的流程。

支付的統(tǒng)一入口是京東,但是點擊不同的支付,需要走不同的流程,京東這邊的流程就需要調(diào)用不同的函數(shù);

那統(tǒng)一入口這里的調(diào)用起來就會比較麻煩

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

實現(xiàn)代碼如下:

1、錯誤寫法 

from abc import ABCMeta
from abc import abstractmethod
?
# Payclass就是一個抽象類
class Pay(metaclass=ABCMeta):
? ? @abstractmethod
? ? def pay(self):
? ? ? ? # 定義支付的基礎(chǔ)接口
? ? ? ? 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這個方法,執(zhí)行代碼會拋錯

2、改進寫法 

那我們就按照要求修改代碼即可,這次實例化就不會拋錯:

from abc import ABCMeta, abstractmethod
class Pay(metaclass=ABCMeta):
? ? @abstractmethod
? ? def pay(self):
? ? ? ? # 定義支付的基礎(chǔ)接口
? ? ? ? pass
class AliPay(Pay):
? ? def pay(self):
? ? ? ? print("這是支付寶支付")
class WetPay(Pay):
? ? def pay(self):
? ? ? ? print("這是微信支付")
class HuaweiPay(Pay):
? ? def pay(self):
? ? ? ? print("這是華為支付")
AliPay().pay()

執(zhí)行可成功,結(jié)果如下:

3、繼續(xù)優(yōu)化

以在定義一個函數(shù),搭配抽線類來實現(xiàn),這個的第一個參數(shù)就是每個支付的實例,另外一個參數(shù)就是每個支付需要的參數(shù)

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

詳情如下:

from abc import ABCMeta, abstractmethod
class Pay(metaclass=ABCMeta):
? ? @abstractmethod
? ? def pay(self):
? ? ? ? # 定義支付的基礎(chǔ)接口
? ? ? ? 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、子類需要嚴格遵守父類的抽象類的規(guī)則,而孫類不需要遵守這個規(guī)則
  • 3、如果想使用抽象類,則該類只需要繼承抽象類即可

到此這篇關(guān)于Python抽象類應用詳情的文章就介紹到這了,更多相關(guān)Python抽象類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?Black代碼格式化終極指南

    Python?Black代碼格式化終極指南

    Black是一款自動化的Python代碼格式化工具,旨在通過強制一致的代碼格式來提高代碼的可讀性和維護性,本文將深入探討B(tài)lack的使用方法、高級特性以及與其他格式化工具的比較,幫助你更好地理解并成功應用Black在你的項目中
    2024-01-01
  • 在Python中分別打印列表中的每一個元素方法

    在Python中分別打印列表中的每一個元素方法

    今天小編就為大家分享一篇在Python中分別打印列表中的每一個元素方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Pysvn 使用指南

    Pysvn 使用指南

    本文主要介紹了Pysvn 使用指南,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python實現(xiàn)的文本對比報告生成工具示例

    Python實現(xiàn)的文本對比報告生成工具示例

    這篇文章主要介紹了Python實現(xiàn)的文本對比報告生成工具,涉及Python基于difflib模塊實現(xiàn)對文本內(nèi)容進行對比的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python中類型關(guān)系和繼承關(guān)系實例詳解

    Python中類型關(guān)系和繼承關(guān)系實例詳解

    這篇文章主要介紹了Python中類型關(guān)系和繼承關(guān)系,較為詳細的分析了Python中類型關(guān)系和繼承關(guān)系的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • 已安裝tensorflow-gpu,但keras無法使用GPU加速的解決

    已安裝tensorflow-gpu,但keras無法使用GPU加速的解決

    今天小編就為大家分享一篇已安裝tensorflow-gpu,但keras無法使用GPU加速的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python切換pip源兩種方法(解決pip?install慢)

    Python切換pip源兩種方法(解決pip?install慢)

    這篇文章主要給大家介紹了關(guān)于Python切換pip源兩種方法(解決pip?install慢),我總結(jié)的這幾種更換pip源的常用方式,希望可以幫助您成功配置國內(nèi)源,解決安裝Python包速度慢的問題,需要的朋友可以參考下
    2023-11-11
  • 解決django 向mysql中寫入中文字符出錯的問題

    解決django 向mysql中寫入中文字符出錯的問題

    這篇文章主要介紹了解決django 向mysql中寫入中文字符出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • django中使用事務(wù)及接入支付寶支付功能

    django中使用事務(wù)及接入支付寶支付功能

    這篇文章主要介紹了django中使用事務(wù)以及接入支付寶支付功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 2021年的Python 時間軸和即將推出的功能詳解

    2021年的Python 時間軸和即將推出的功能詳解

    這篇文章主要介紹了2021年的Python 時間軸和即將推出的功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論