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

python?多態(tài)?協(xié)議?鴨子類型詳解

 更新時間:2021年11月26日 15:55:36   作者:tnan2522  
這篇文章主要為大家介紹了python?多態(tài)?協(xié)議?鴨子類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

接口(python 中的協(xié)議)的多種不同的實現(xiàn)方式即為多態(tài)。多態(tài)的作用,就是為了類在繼承和派生的時候,保證使用“家譜”中任一類的實例的某一屬性時的正確調(diào)用。

from abc import ABCMeta, abstractmethod
# 鴨子類
class Dock(metaclass=ABCMeta):
    @abstractmethod
    def Swimming(self):  # 游泳方法協(xié)議(接口)
        pass
    @abstractmethod  # 走路協(xié)議(接口)
    def Walk(self):
        pass
    @classmethod
    def __subclasshook__(cls, C):
        # 判斷是否另一個比較類是否實現(xiàn)了 Swimming Walk 協(xié)議, 如果實現(xiàn)了鴨子類的這兩個協(xié)議,
        # 那么比較類的類型就是一個鴨子類型
        # 當(dāng)代碼執(zhí)行中如果執(zhí)行到對象和這個類進行 isinstance 類型判斷時會走到這個函數(shù)進行判斷
        for method in ('Swimming', 'Walk'):
            for B in C.__mro__:
                if method in B.__dict__:
                    if B.__dict__[method] is None:
                        return NotImplemented
                    break
            else:
                return NotImplemented
        return True
# 狗類
class Dog(object):
    # 實現(xiàn)swimming 協(xié)議
    def Swimming(self):
        print("狗會狗刨")
    # 實現(xiàn)walk 協(xié)議
    def Walk(self):
        print("狗會走路")
    def Eat(self):
        print("狗喜歡吃骨頭")
# 烏龜類
class Tortoise(object):
    # 實現(xiàn)swimming 協(xié)議
    def Swimming(self):
        print("烏龜會潛水")
    # 實現(xiàn)walk 協(xié)議
    def Walk(self):
        print("烏龜會走路")
    def Eat(self):
        print("烏龜喜歡吃魚")

dog = Dog()
tortoise = Tortoise()
print(isinstance(dog, Dock))         # True
print(isinstance(tortoise, Dock))	 # True

可以看到,在上面的代碼中,只要實現(xiàn)了 Dock 類中的 swimming 和 Walk 方法,那么這個類就可以被叫做 Dock 類

應(yīng)用場景 如: for 循環(huán), 在python 中 for 循環(huán)只能用于可迭代對象, 那么, 我自己定義的類實現(xiàn)了 __iter__協(xié)議(接口),這個實例類就是一個可迭代對象,可以被for 循環(huán)使用

python 中定義協(xié)議類協(xié)議使用 @abstractmethod 裝飾器,@abstractmethod 裝飾過的類是不能進行初始化的,相對于c++中的純虛函數(shù)類
這個類只能當(dāng)做協(xié)議(接口)類

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python中的for循環(huán)詳情

    Python中的for循環(huán)詳情

    這篇文章主要介紹了Python中的for循環(huán),for語句實際上解決的是循環(huán)問題。在很多的高級語言中都有for循環(huán)(for loop)。下面就來簡單給大家介紹Python中的for循環(huán)的相關(guān)資料,需要的朋友可以參考一下
    2021-10-10
  • Python高階函數(shù)map()?簡介和使用詳解

    Python高階函數(shù)map()?簡介和使用詳解

    map()?函數(shù)是Python中的內(nèi)置函數(shù),這個函數(shù)又叫做映射函數(shù),其實里面具有一個迭代器的功能,會依次遍歷可迭代對象進行相關(guān)的操作,這篇文章主要介紹了Python高階函數(shù)map()?簡介和使用詳解,需要的朋友可以參考下
    2023-03-03
  • python Tcp協(xié)議發(fā)送和接收信息的例子

    python Tcp協(xié)議發(fā)送和接收信息的例子

    今天小編就為大家分享一篇python Tcp協(xié)議發(fā)送和接收信息的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • pymongo中聚合查詢的使用方法

    pymongo中聚合查詢的使用方法

    這篇文章主要給大家介紹了關(guān)于pymongo中聚合查詢的使用方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用pymongo具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Pycharm遠程調(diào)試原理及具體配置詳解

    Pycharm遠程調(diào)試原理及具體配置詳解

    這篇文章主要介紹了Pycharm遠程調(diào)試原理及具體配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 解決df.to_csv()中文件名的問題

    解決df.to_csv()中文件名的問題

    這篇文章主要介紹了解決df.to_csv()中文件名的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Keras 使用 Lambda層詳解

    Keras 使用 Lambda層詳解

    這篇文章主要介紹了Keras 使用 Lambda層詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用Selenium+BeautifulSoup爬取淘寶搜索頁

    Python使用Selenium+BeautifulSoup爬取淘寶搜索頁

    這篇文章主要為大家詳細介紹了Python使用Selenium+BeautifulSoup爬取淘寶搜索頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法

    python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法

    本篇文章主要介紹了python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 解決在Python編輯器pycharm中程序run正常debug錯誤的問題

    解決在Python編輯器pycharm中程序run正常debug錯誤的問題

    今天小編就為大家分享一篇解決在Python編輯器pycharm中程序run正常debug錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論

安康市| 平果县| 云龙县| 惠东县| 大新县| 中山市| 双柏县| 建昌县| 天祝| 萍乡市| 宁城县| 黎平县| 渑池县| 铁力市| 咸阳市| 湖北省| 阆中市| 灵石县| 海林市| 临清市| 温泉县| 万安县| 山丹县| 新安县| 禄丰县| 湖南省| 文山县| 万荣县| 三台县| 武安市| 宜丰县| 阳曲县| 绍兴县| 冷水江市| 高碑店市| 板桥市| 高淳县| 卢氏县| 天气| 库伦旗| 马山县|