集合库提供抽象类及其子类,例如MutableSequence
及其超类Sequence
。
子类中抽象方法的必要性然后被强制在从它们继承的类中定义。为什么不能使用具体方法呢?
答案 0 :(得分:1)
那么具体方法的实现是什么??
这些类的重点是而不是,以便为您提供另一个列表对象。它们的存在是为了传达类需要实现的方法以遵守给定的协议。
对于容器ABC,它们本身不是容器;他们实际上什么都没有。因此,您无法为__getitem__
提供具体的Sequence
方法; 没有内部状态。并且提供使用_list
属性的实现将指示子类应如何实现它,但是代理类(仅举个例子)将没有内部序列状态。
只有可以用其他方法表达的方法,例如__contains__
(返回True
如果__getitem__
不会引发异常 )或__iter__
(使用增加的索引并生成__getitem__
的结果,直到它引发异常)具有子类化方便的具体实现。