python接口和抽象类的区别_Python中的抽象类和接口之间的区别

你会看到有时是以下:

class Abstract1( object ):

"""Some description that tells you it's abstract,

often listing the methods you're expected to supply."""

def aMethod( self ):

raise NotImplementedError( "Should have implemented this" )

因为Python没有(并且不需要)一个正式的接口契约,抽象和接口之间的Java风格的区别不存在。如果有人通过努力来定义一个正式的接口,它也将是一个抽象类。唯一的区别是在docstring中声明的意图。

抽象和接口之间的区别是一个hairsplitting的东西,当你有鸭打字。

Java使用接口,因为它没有多重继承。

因为Python有多重继承,你也可能看到这样的东西

class SomeAbstraction( object ):

pass # lots of stuff - but missing something

class Mixin1( object ):

def something( self ):

pass # one implementation

class Mixin2( object ):

def something( self ):

pass # another

class Concrete1( SomeAbstraction, Mixin1 ):

pass

class Concrete2( SomeAbstraction, Mixin2 ):

pass

这使用一种带有mixins的抽象超类来创建不相交的具体子类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值