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中声明的意图。在

当你使用duck类型时,抽象和接口之间的区别是一件非常棘手的事情

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值