协议和鸭子类型
python协议
- 在python中创建功能完善的序列类型无需使用继承,只需实现符合序列协议的方法。
- 在面向对象编程中,协议是非正式的接口。非正式是指跟抽象基类不一样,协议只在文档中定义,不在代码中定义。
- python中,只要实现了__len__和__getitem__两个特殊方法,则可认为该类是序列类型。
- 协议是非正式的,没有强制力,在具体的使用场景中,通常只需要实现协议的一部分。例如为了支持迭代,只需要实现__getitem__方法,不必实现__len__方法。
鸭子类型
- 比如任何类,只要实现了__len__和__getitem__两个方法,其就可以像序列一样使用,这就是鸭子类型,如果一个类行为像序列,那么它就是序列。
浙公网安备 33010602011771号