协议和鸭子类型

python协议

  • 在python中创建功能完善的序列类型无需使用继承,只需实现符合序列协议的方法。
  • 在面向对象编程中,协议是非正式的接口。非正式是指跟抽象基类不一样,协议只在文档中定义,不在代码中定义。
  • python中,只要实现了__len__和__getitem__两个特殊方法,则可认为该类是序列类型。
  • 协议是非正式的,没有强制力,在具体的使用场景中,通常只需要实现协议的一部分。例如为了支持迭代,只需要实现__getitem__方法,不必实现__len__方法。

鸭子类型

  • 比如任何类,只要实现了__len__和__getitem__两个方法,其就可以像序列一样使用,这就是鸭子类型,如果一个类行为像序列,那么它就是序列。
posted @ 2022-03-14 10:40  肖肖凯  阅读(22)  评论(0)    收藏  举报