最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python抽象類(lèi)應(yīng)用詳情

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

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

一、問(wèn)題場(chǎng)景

主要使用場(chǎng)景是這樣的

比如京東上買(mǎi)東西,買(mǎi)完?yáng)|西后需要支付,京東可以使用支付寶進(jìn)行支付,也可以通過(guò)微信支付,也可以通過(guò)京東白條支付,也可以通過(guò)apppay支付,

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

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

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

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

都是一個(gè)支付,阿里的支付、騰訊的支付、蘋(píng)果的支付方法名都不一樣、

二、使用抽象類(lèi)思想解決

此時(shí)我們就可以引入python中的抽線(xiàn)類(lèi)

首先需要引入2個(gè)模塊:

from abc import ABCMeta
from abc import abstractmethod

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

1、錯(cuò)誤寫(xiě)法 

from abc import ABCMeta
from abc import abstractmethod
?
# Payclass就是一個(gè)抽象類(lèi)
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("這是華為支付")

比如我們沒(méi)有按照要求實(shí)例化pay這個(gè)方法,執(zhí)行代碼會(huì)拋錯(cuò)

2、改進(jìn)寫(xiě)法 

那我們就按照要求修改代碼即可,這次實(shí)例化就不會(huì)拋錯(cuò):

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)化

以在定義一個(gè)函數(shù),搭配抽線(xiàn)類(lèi)來(lái)實(shí)現(xiàn),這個(gè)的第一個(gè)參數(shù)就是每個(gè)支付的實(shí)例,另外一個(gè)參數(shù)就是每個(gè)支付需要的參數(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)

三、使用抽象類(lèi)的注意事項(xiàng)

  • 1、抽象類(lèi)不能被實(shí)例化
  • 2、子類(lèi)需要嚴(yán)格遵守父類(lèi)的抽象類(lèi)的規(guī)則,而孫類(lèi)不需要遵守這個(gè)規(guī)則
  • 3、如果想使用抽象類(lèi),則該類(lèi)只需要繼承抽象類(lèi)即可

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

相關(guān)文章

  • VsCode中超好用的8個(gè)python插件推薦

    VsCode中超好用的8個(gè)python插件推薦

    本人日常使用vscode進(jìn)行開(kāi)發(fā),并且比較喜歡折騰vscode,會(huì)到處找這一些好玩的插件,于是越攢越多,下面這篇文章主要給大家介紹了關(guān)于VsCode中超好用的8個(gè)python擴(kuò)展插件的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Selenium Webdriver元素定位的八種常用方式(小結(jié))

    Selenium Webdriver元素定位的八種常用方式(小結(jié))

    這篇文章主要介紹了Selenium Webdriver元素定位的八種常用方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 使用Termux在手機(jī)上運(yùn)行Python的詳細(xì)過(guò)程

    使用Termux在手機(jī)上運(yùn)行Python的詳細(xì)過(guò)程

    這篇文章主要介紹了使用Termux在手機(jī)上運(yùn)行Python的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • python sys,os,time模塊的使用(包括時(shí)間格式的各種轉(zhuǎn)換)

    python sys,os,time模塊的使用(包括時(shí)間格式的各種轉(zhuǎn)換)

    這篇文章主要介紹了python sys,os,time模塊的使用(包括時(shí)間格式的各種轉(zhuǎn)換),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python編寫(xiě)暴力破解FTP密碼小工具

    python編寫(xiě)暴力破解FTP密碼小工具

    本文給大家分享了一段自己用python編寫(xiě)的暴力破解FTP密碼的小工具的代碼,原理很簡(jiǎn)單,就是利用多線(xiàn)程調(diào)用相應(yīng)的字典進(jìn)行窮舉測(cè)試,小伙伴們可以自由修改。
    2014-11-11
  • Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能

    Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能

    這篇文章主要介紹了應(yīng)用百度AI的人臉識(shí)別功能對(duì)年齡、性別、顏值等進(jìn)行識(shí)別,代碼具有一定的學(xué)習(xí)價(jià)值,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Python爬蟲(chóng)之爬取嗶哩嗶哩熱門(mén)視頻排行榜

    Python爬蟲(chóng)之爬取嗶哩嗶哩熱門(mén)視頻排行榜

    這篇文章主要介紹了Python爬蟲(chóng)之爬取嗶哩嗶哩熱門(mén)視頻排行榜,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Centos 升級(jí)到python3后pip 無(wú)法使用的解決方法

    Centos 升級(jí)到python3后pip 無(wú)法使用的解決方法

    今天小編就為大家分享一篇Centos 升級(jí)到python3后pip 無(wú)法使用的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 利用Python找回微信撤回信息

    利用Python找回微信撤回信息

    一條撤回的微信消息,就像一個(gè)秘密,讓你迫切地想去一探究竟。這篇文章就將為大家介紹如何用Python找回撤回的微信信息,感興趣的可以試一試
    2022-01-01
  • 使用Python畫(huà)股票的K線(xiàn)圖的方法步驟

    使用Python畫(huà)股票的K線(xiàn)圖的方法步驟

    這篇文章主要介紹了使用Python畫(huà)股票的K線(xiàn)圖的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論

汝城县| 盐源县| 郎溪县| 抚宁县| 金秀| 棋牌| 稷山县| 上杭县| 万载县| 滦南县| 阿瓦提县| 绥滨县| 南岸区| 岳阳县| 肇庆市| 东海县| 盐池县| 苍山县| 达日县| 怀远县| 体育| 辽宁省| 碌曲县| 孟津县| 张家港市| 安仁县| 雷波县| 河东区| 永仁县| 甘孜县| 凤山县| 基隆市| 合作市| 大理市| 涿鹿县| 兖州市| 长春市| 聊城市| 共和县| 丘北县| 安平县|