如何在Python中实现面向协议的编程?

如何在Python中实现面向协议的编程?,python,swift-protocols,Python,Swift Protocols,我是Python编程新手,对Objective-C和Swift有很强的背景。 在Swift中我喜欢的一件很酷的事情是使用默认实现的面向协议的编程。我想知道在Python中是否可能有相同的行为 我不确定这是否是一个好的解决方案,因为POP解决了单一继承的问题,但在python中,我们可以使用多重继承。问题是,从编程之旅开始,我就听说多重继承是不好的 我认为应该做的是: 使用抽象类 实现这个抽象类的一些方法 使类从抽象类继承 所以我很想知道人们是否在Python中使用POP?如果是的话,他们是如

我是Python编程新手,对Objective-C和Swift有很强的背景。 在Swift中我喜欢的一件很酷的事情是使用默认实现的面向协议的编程。我想知道在Python中是否可能有相同的行为

我不确定这是否是一个好的解决方案,因为POP解决了单一继承的问题,但在python中,我们可以使用多重继承。问题是,从编程之旅开始,我就听说多重继承是不好的

我认为应该做的是:

  • 使用抽象类
  • 实现这个抽象类的一些方法
  • 使类从抽象类继承

所以我很想知道人们是否在Python中使用POP?如果是的话,他们是如何做到的?

Swift的协议语义并没有直接转换成Python必须提供的任何东西。如果子类化和多重继承不足以满足您的目的,您可以研究一些方法,尽管一般来说,这很可能是一种过于复杂的方法。我自己在Swift和Python之间切换,我理解您继承面向协议模型的动机,但最终,将某种设计模式强加于存在其他更惯用方法的语言是没有多大意义的。@MarcelTesch感谢您的评论,我很高兴您理解我的担忧。我完全同意你的观点,强制使用某种设计模式是个好主意,但我很好奇Python中是否已经存在某种东西。我曾经尝试解决不同的问题,但目前没有成功。但是你会推荐Python中的多重继承吗?这不是很危险吗?对于多重继承,我会暂时说“是”,它当然是一个强大的工具。这是一种让你有足够的绳子来吊死自己的东西,但是通过遵循一些最佳实践,而不是过于热情,你可以创造出令人惊叹的东西。学习可能是最好的起点。@MarcelTesch是的,这是真的,我喜欢用绳子来比喻啊哈。非常感谢你的这篇真正感兴趣的文章。