【发布时间】:2015-04-28 11:13:52
【问题描述】:
为什么 python 允许在抽象方法中包含代码?我知道我们可以通过 super 调用该代码,但我想不出为什么我希望我的抽象方法中包含代码。
【问题讨论】:
-
提供标准基础设施? Python 是一种用于咨询成人的语言,它不会限制您扩展模型。
-
抽象基类毕竟是一个工具,而不是一个约束工具。
为什么 python 允许在抽象方法中包含代码?我知道我们可以通过 super 调用该代码,但我想不出为什么我希望我的抽象方法中包含代码。
【问题讨论】:
这在abc module docs中有解释:
注意:与 Java 抽象方法不同,这些抽象方法可能有一个实现。可以通过覆盖它的类中的
super()机制调用此实现。 这对于在使用协作多重继承的框架中作为超级调用的端点很有用。
(已添加重点。)
在引入 ABC 的 PEP 中也对此进行了解释,您可以点击 PEP 中的链接到 python-dev 和 -ideas 线程,这些线程更详细地讨论了该决定。 (这是公开开发语言的优势之一;对于 2.2 之后添加的任何内容,您不必怀疑此类问题,只需查看整个讨论即可。)
【讨论】: