python的接口,前端调用python接口
本文主要介绍Python中面向接口编程的细节。Python中的接口处理与大多数其他语言不同,它们的设计复杂度也不同。关于Python中接口编程的介绍,有需要的可以参考以下文章。
00-1010简介Python接口概述非正式接口
目录
接口在软件工程中起着重要的作用。随着应用功能的不断扩展,管理代码库的更新和变更变得越来越困难。在很多情况下,你会发现一些类看起来非常相似,但并不相关,这可能会导致一些难以维护。在这次分享中,您将看到如何使用Python接口来帮助确定。
主要从下面几个方面了解内容:
了解接口的工作原理和创建Python接口的注意事项;理解接口在像Python这样的动态语言中的重要性;实现;一个非正式的Python接口;使用Abc。ABCMeta和@abc.abstractmethod来实现一个正式的Python接口。Python中的接口与大多数其他语言的处理方式不同,它们的设计复杂度也不同。在本教程结束时,您将对Python数据模型的某些方面有更好的理解,并对Python中的接口与Java、C和Go等语言中的接口进行比较。
前言
在高层次上,接口充当设计类的蓝图。在接口中,定义方法与在类中定义方法没有什么不同。然而,与类不同,这些方法是抽象的。抽象的方法是定义接口的一种简单方式。方法是在这里定义的,不急于实现它们。这是由具体的类来完成的,然后这个类来到实现接口,给接口的抽象方法赋予具体的含义。
与Java、Go、C相比,Python的接口设计方法有些不同。所有这些语言都提供了一个接口关键字来定义接口,但是在Python中,没有提供这个关键字。Python在另一个方面明显不同于其他语言。Python不需要实现接口的类来定义接口的所有抽象方法。
概述 Python 接口
在某些情况下,严格的规范可能不需要正式的Python接口。Python的动态特性允许实现非正式的接口.非正式的Python接口是一种可以重载的方法。
在下面的示例中,您将从一个数据工程师的角度出发,他需要从各种非结构化文件类型(如PDF和电子邮件)中提取文本。将创建一个非正式接口来定义PdfParser和EmlParser的具体类中的方法。
类别信息parser接口:
def load_data_source(self,path: str,file_name: str) - str:
载入文件以提取文本。
及格
def extract_text(self,full _ file _ name : str)-dict :
从当前加载的文件中提取文本。
及格
InformalParserInterface类中定义了两个方法,即。load_data_source()和。提取_文本()。虽然定义了方法,但没有实现。接下来,我们需要实现这两个方法来创建一个继承InformalParserInterface的类。我们的care接口定义了提取文本的一般流程,也可以看作是一个规范,就是我们会先加载数据源,然后从数据源中提取文本。
InformalParserInterface看起来像标准的python。
on 的 class。不过因为形似接口所以可以将这个类看做一个接口。
你定义了两个实现InformalParserInterface
的类。为了使用接口,首先创建一个具体类来继承于。接口,也就是这个类是接口类的子类,提供了接口抽象方法的具体实现。将创建两个具体类来实现你的接口。第一个是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
的具体实现现在允许你从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
的具体实现现在允许你从电子邮件文件中提取文本。
到目前为止,定义了InformalPythonInterface
的两个具体实现。然而,请注意,EmlParser
未能正确定义.extract_text()
。要检查EmlParser
是否实现了InformalParserInterface
抽象方法,也就是接口方法,可以参照如下代码。
>>> # Check if both PdfParser and EmlParser implement InformalParserInterface>>> issubclass(PdfParser, InformalParserInterface)
True
>>> issubclass(EmlParser, InformalParserInterface)
True
到此这篇关于Python 中面向接口编程详情的文章就介绍到这了,更多相关Python 接口编程内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。