我对Python3和接口进行了一些搜索,似乎找不到直接的答案,是否使用接口符合Pythonic的原则。我知道Python允许mixins,并且支持鸭子类型。然而,实现接口需要满足一组“要求”。那么,在Python3中,如何看待接口呢? 如果接口符合Pythonic的原则,那么最佳实现方式是什么?
虽然Python 2和3通过名义子类型(mixins)和抽象基类支持这种类型的功能,但如果您使用类型注释,则PEP 544引入了静态鸭子类型的概念,其中Protocol定义了子类型的接口(可选包括属性和方法的默认实现)。类似于Swift协议或Java接口。 您可以通过导入typing-extensions模块,在所有Python版本中(除了3.5.0)使用Protocols。