Python中抽象类和接口的区别

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值