Python中的抽象类和接口有什么区别?
#1楼
用更基本的方式来解释:界面有点像空的松饼盘。 它是一个包含一组没有代码的方法定义的类文件。
抽象类是相同的,但并非所有函数都需要为空。 有些人可以有代码。 它不是严格空的。
为什么要区分:Python中没有太多实际差异,但在大型项目的规划级别上,谈论接口可能更常见,因为没有代码。 特别是如果您正在使用习惯于该术语的Java程序员。
#2楼
Python中的抽象类和接口有什么区别?
对象的接口是该对象上的一组方法和属性。
在Python中,我们可以使用抽象基类来定义和实施接口。
使用抽象基类
例如,假设我们要使用collections
模块中的一个抽象基类:
import collections
class MySet(collections.Set):
pass
如果我们尝试使用它,我们会得到一个TypeError
因为我们创建的类不支持集合的预期行为:
>>> MySet()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class MySet with abstract methods
__contains__, __iter__, __len__
所以我们要求至少实现__contains__
__iter__
, __iter__
和__len__
。 让我们使用文档中的这个实现示例:
class ListBasedSet(collections.Set