【发布时间】:2021-07-17 21:11:28
【问题描述】:
有人能解释一下 Python 编程上下文中术语 protocol 和 interface 之间的区别吗?
我在 buffer protocol 和 PEP 544 之类的东西中看到了对“协议”一词的引用,但我想确保我理解这个词的含义,以及何时何地,你会以不同的方式使用它来自“接口”的一般概念。
【问题讨论】:
-
@jonrsharpe 请注意该页面在使用协议与接口时如何摇摆不定,并且在某些地方可以互换使用它们。它们是 Python 上下文中的同义词,还是协议有一些额外的(隐含的)特征等?
-
我推荐阅读 Luciano Ramalho 的 Fluent Python 一书的 Interfaces and Protocols in Python Culture 以获得完整的了解python中协议和接口的区别。
-
@FrancoMorero 我会接受一个答案,您提供了一些(最小)在那里描述的差异概述,然后说细节在那本书中。
-
这是另一个有用的链接:masnun.rocks/2017/04/15/interfaces-in-python-protocols-and-abcs。简而言之,我会说协议是一个“非正式接口”,它定义了一个类如何交互,但不是语言语法的一部分。可以通过定义要实现的接口方法的抽象基类来实现更“正式的接口”。该页面上的更多详细信息。
标签: python terminology