python - Python 包含非空主体的抽象方法是否违反了预期的虚拟/抽象设计模式?
问题描述
我一直在阅读虚拟方法与抽象方法之间的区别。这是有据可查的。 虚拟方法和抽象方法之间的区别
虚拟方法有一个实现,并为派生类提供覆盖它的选项。
抽象方法不提供实现并强制派生类覆盖该方法。
因此,抽象方法中没有实际代码,子类必须覆盖该方法。
根据这些陈述,听起来用 装饰的方法abc.abstractmethod
应该没有 implementation,只有pass
, ...
(用于abc
docs)或raise NotImplementedError
.
似乎程序员通常abc.abstractmethod
用来实现一个虚函数,其中重写是强制性的。这可以在很多地方看到:
- 我应该在 Python 中的抽象方法体中放入什么--> Mercurial > cpython
- 在Python 3.6
abc
文档中__subclasshook__
然而,这似乎违背了没有主体的抽象方法的设计模式的定义。
这个答案很好地说明了主题。
我的观察是虚拟与抽象方法设计模式目前在 Python 中被松散地遵循。
任何人都可以阐明这一点吗?最佳做法是什么?
解决方案
推荐阅读
- eclipse - 如何将 Maven 项目定义为另一个 Maven 项目的依赖项,以便在 Eclipse 中进行调试?
- apache - 从 Stretch 升级到 Buster 后,apache2.4 mod ldap 无法连接到 2012R2 LDAP
- python - 记住在烧瓶中呈现模板时 CSS 样式表的变化
- c# - 如何在多个 Godot-mono 项目中重用 C# 代码
- nginx - nginx反向代理报错:你要找的页面暂时不可用
- mongodb - 如何将整个 MongoDB 集合传输到 Web 应用程序?
- ios - Flutter iOS 错误:未找到架构 x86_64 的符号
- python - 如何修复 GBTclassifier 混淆矩阵中的 Keyerror
- webpack - TypeError:无法读取未定义的属性“tapPromise”
- python - 在 python 中从 git 安装库 - ImportError: Bad git executable