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

Python 中面向接口編程詳情

 更新時間:2022年05月20日 14:11:47   作者:? zidea?  ?  
這篇文章主要介紹了Python 中面向接口編程詳情,Python 中的接口與大多數(shù)其它語言的處理方式不同,它們的設(shè)計復(fù)雜性也不同,關(guān)于Python 接口編程的介紹,需要的小伙伴可以參考下面文章內(nèi)容

前言

接口在軟件工程扮演重要角色,隨著應(yīng)用程序的功能不斷擴(kuò)展,代碼庫的更新和改變也難以管理。在許多情況下,會發(fā)現(xiàn)有一些看起來非常相似,但卻不相關(guān)的類,這可能會導(dǎo)致一些難于維護(hù)。在本次分享中,將看到你如何使用 Python 接口來幫助確定。

主要從下面幾個方面了解內(nèi)容:

  • 了解接口的工作原理和創(chuàng)建 Python 接口的注意事項
  • 理解接口在像 Python 這樣的動態(tài)語言中重要性
  • 實現(xiàn)一個非正式的 Python 接口
  • 使用 abc.ABCMeta 和 @abc.abstractmethod 來實現(xiàn)一個正式的 Python 接口

Python 中的接口與大多數(shù)其它語言的處理方式不同,它們的設(shè)計復(fù)雜性也不同。在本教程結(jié)束時,你將對 Python 的數(shù)據(jù)模型的某些方面有更好的理解,以及 Python 中的接口與 Java、C++ 和 Go 等語言中的接口的比較。

概述 Python 接口

在高層次上,接口充當(dāng)了設(shè)計類的藍(lán)圖,在接口中,定義了方法與在類中定義并沒有什么不同。不過不同于類,這些方法都是抽象方法。一個抽象的方法是定義接口的簡單的方式。在這里定義了方法,并不急于實現(xiàn)這些方法。這是由具體的類來完成的,然后由類來實現(xiàn)接口,為接口的抽象方法賦予具體的意義。

與 Java、Go 和 C++ 這些語言相比,Python 的接口設(shè)計方法有些不同。這些語言都提供了一個interface 關(guān)鍵字來定義接口,而在 Python 中,卻沒有提供這個關(guān)鍵字。Python 在另一個方面與其他語言有明顯的區(qū)別。python 并不要求實現(xiàn)接口的類來定義接口的所有抽象方法

非正式接口

在某些情況下,可能不需要正式的 Python 接口來嚴(yán)格規(guī)范。Python 的動態(tài)特性允許實現(xiàn)一個非正式的接口。非正式的 Python 接口是一個定義了可以被重載的方法。

在下面的例子中,你將從一個數(shù)據(jù)工程師的角度出發(fā),他需要從各種不同的非結(jié)構(gòu)化文件類型中提取文本,比如 PDF 和電子郵件。將創(chuàng)建一個非正式的接口,定義 PdfParserEmlParser具體類中的方法。

class InformalParserInterface:
    def load_data_source(self, path: str, file_name: str) -> str:
        """Load in the file for extracting text."""
        pass
    def extract_text(self, full_file_name: str) -> dict:
        """Extract text from the currently loaded file."""
        pass

在 InformalParserInterface類中定義了兩個方法,分別是 .load_data_source()和 .extract_text()。 雖然定義了方法卻沒有實現(xiàn)。接下來我們創(chuàng)建繼承 InformalParserInterface的類將需要實現(xiàn)這兩個方法。我們關(guān)心接口定義了提取文本一般流程,也可以看做規(guī)范,也就是我們首先會加載數(shù)據(jù)源,然后在數(shù)據(jù)源上提取文本。

InformalParserInterface看起來就是一個標(biāo)準(zhǔn) python 的 class。不過因為形似接口所以可以將這個類看做一個接口。

你定義了兩個實現(xiàn)InformalParserInterface的類。為了使用接口,首先創(chuàng)建一個具體類來繼承于。接口,也就是這個類是接口類的子類,提供了接口抽象方法的具體實現(xiàn)。將創(chuàng)建兩個具體類來實現(xiàn)你的接口。第一個是PdfParser,將用來解析 PDF 文件的文本。

class PdfParser(InformalParserInterface):
    """Extract text from a PDF"""
    def load_data_source(self, path: str, file_name: str) -> str:
        """Overrides InformalParserInterface.load_data_source()"""
        pass
    def extract_text(self, full_file_path: str) -> dict:
        """Overrides InformalParserInterface.extract_text()"""
        pass

InformalParserInterface的具體實現(xiàn)現(xiàn)在允許你從PDF文件中提取文本。第二個具體的類是EmlParser,將用來解析電子郵件中的文本。

class EmlParser(InformalParserInterface):
    """Extract text from an email"""
    def load_data_source(self, path: str, file_name: str) -> str:
        """Overrides InformalParserInterface.load_data_source()"""
        pass
    def extract_text_from_email(self, full_file_path: str) -> dict:
        """A method defined only in EmlParser.
        Does not override InformalParserInterface.extract_text()
        """
        pass

InformalParserInterface的具體實現(xiàn)現(xiàn)在允許你從電子郵件文件中提取文本。

到目前為止,定義了 InformalPythonInterface的兩個具體實現(xiàn)。然而,請注意,EmlParser未能正確定義.extract_text()。要檢查EmlParser是否實現(xiàn)了InformalParserInterface 抽象方法,也就是接口方法,可以參照如下代碼。

>>> # Check if both PdfParser and EmlParser implement InformalParserInterface
>>> issubclass(PdfParser, InformalParserInterface)
True
>>> issubclass(EmlParser, InformalParserInterface)
True

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

相關(guān)文章

最新評論

息烽县| 福海县| 牙克石市| 南乐县| 德兴市| 丹棱县| 昭平县| 昔阳县| 崇州市| 汕尾市| 清新县| 法库县| 探索| 屏东市| 长沙市| 澎湖县| 墨江| 临猗县| 罗源县| 北碚区| 安塞县| 精河县| 鸡西市| 垫江县| 成武县| 卓尼县| 黄山市| 安图县| 沙雅县| 杂多县| 怀集县| 芒康县| 霍邱县| 武义县| 宁陵县| 赤峰市| 中牟县| 满洲里市| 永泰县| 乌苏市| 新兴县|