【问题标题】:Why does Python allow abstract methods to have code?为什么 Python 允许抽象方法有代码?
【发布时间】:2015-04-28 11:13:52
【问题描述】:

为什么 python 允许在抽象方法中包含代码?我知道我们可以通过 super 调用该代码,但我想不出为什么我希望我的抽象方法中包含代码。

【问题讨论】:

  • 提供标准基础设施? Python 是一种用于咨询成人的语言,它不会限制您扩展模型。
  • 抽象基类毕竟是一个工具,而不是一个约束工具。

标签: python abstract


【解决方案1】:

这在abc module docs中有解释:

注意:与 Java 抽象方法不同,这些抽象方法可能有一个实现。可以通过覆盖它的类中的super() 机制调用此实现。 这对于在使用协作多重继承的框架中作为超级调用的端点很有用。

(已添加重点。)

在引入 ABC 的 PEP 中也对此进行了解释,您可以点击 PEP 中的链接到 python-dev 和 -ideas 线程,这些线程更详细地讨论了该决定。 (这是公开开发语言的优势之一;对于 2.2 之后添加的任何内容,您不必怀疑此类问题,只需查看整个讨论即可。)

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2013-09-15
    • 2019-06-09
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多