collections.abc中抽象方法的目的

时间:2017-04-08 11:59:03

标签: python collections abstract-class

集合库提供抽象类及其子类,例如MutableSequence及其超类Sequence

子类中抽象方法的必要性然后被强制在从它们继承的类中定义。为什么不能使用具体方法呢?

1 个答案:

答案 0 :(得分:1)

那么具体方法的实现是什么?

这些类的重点是而不是,以便为您提供另一个列表对象。它们的存在是为了传达类需要实现的方法以遵守给定的协议。

对于容器ABC,它们本身不是容器;他们实际上什么都没有。因此,您无法为__getitem__提供具体的Sequence方法; 没有内部状态。并且提供使用_list属性的实现将指示子类应如何实现它,但是代理类(仅举个例子)将没有内部序列状态。

只有可以用其他方法表达的方法,例如__contains__返回True如果__getitem__不会引发异常 )或__iter__使用增加的索引并生成__getitem__的结果,直到它引发异常)具有子类化方便的具体实现。