如何掌握Python接口编程,python接口如何使用
Admin 2022-10-08 群英技术资讯 914 次浏览
在这篇文章中,我们来学习一下“如何掌握Python接口编程,python接口如何使用”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。主要从下面几个方面了解内容:
abc.ABCMeta 和 @abc.abstractmethod 来实现一个正式的 Python 接口Python 中的接口与大多数其它语言的处理方式不同,它们的设计复杂性也不同。在本教程结束时,你将对 Python 的数据模型的某些方面有更好的理解,以及 Python 中的接口与 Java、C++ 和 Go 等语言中的接口的比较。
在高层次上,接口充当了设计类的蓝图,在接口中,定义了方法与在类中定义并没有什么不同。不过不同于类,这些方法都是抽象方法。一个抽象的方法是定义接口的简单的方式。在这里定义了方法,并不急于实现这些方法。这是由具体的类来完成的,然后由类来实现接口,为接口的抽象方法赋予具体的意义。
与 Java、Go 和 C++ 这些语言相比,Python 的接口设计方法有些不同。这些语言都提供了一个interface 关键字来定义接口,而在 Python 中,却没有提供这个关键字。Python 在另一个方面与其他语言有明显的区别。python 并不要求实现接口的类来定义接口的所有抽象方法
在某些情况下,可能不需要正式的 Python 接口来严格规范。Python 的动态特性允许实现一个非正式的接口。非正式的 Python 接口是一个定义了可以被重载的方法。
在下面的例子中,你将从一个数据工程师的角度出发,他需要从各种不同的非结构化文件类型中提取文本,比如 PDF 和电子邮件。将创建一个非正式的接口,定义 PdfParser和EmlParser具体类中的方法。
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()。 虽然定义了方法却没有实现。接下来我们创建继承 InformalParserInterface的类将需要实现这两个方法。我们关心接口定义了提取文本一般流程,也可以看做规范,也就是我们首先会加载数据源,然后在数据源上提取文本。
InformalParserInterface看起来就是一个标准 python 的 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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python如何读取16进制byte数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
阈值分割法是一种基于区域的图像分割技术,原理是把图像像素点分为若干类。本文将利用Python+OpenCV实现阈值分割,感兴趣的可以了解一下
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
这篇文章主要为大家介绍了python神经网络学习数据增强及预处理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要给大家分享numpy中的dot函数用法的内容,下文有具体的实例,具有一定的借鉴和学习价值,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008