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的抽象类和接口的区别并不存在。如果有人尝试定义一个正式的接口,它其实也是一个抽象类。唯一的不同就是在文档注释的表述。

并且当你使用鸭子类型时,抽象类和接口的区别有点吹毛求疵了。

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

这是一种使用混合抽象超类去创建不相交的具体子类的方法。

人已赞赏
Python

Python如何判断一个对象iterable【面试题详解】

2020-12-28 21:45:19

Python

如何获取Python的site-packages目录位置【面试题详解】

2020-12-28 21:47:45

'); })();