python - 以旧方式抽象类是行不通的
问题描述
我正在尝试创建一个抽象基类。当使用 python 3 的语法时,它可以完美地工作。但是当我切换到 python 2.7 的语法时,它就不起作用了。
下面的代码是用 2.7 语法编写的,如果我运行它,它会工作,当它不应该工作时,类中没有foo
方法StillAbstract
。
from abc import ABCMeta, abstractmethod
class Abstract:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
class StillAbstract(Abstract):
pass
if __name__ == '__main__':
a = StillAbstract()
但是,当我用 3+ 语法编写它时,它按应有的方式工作,但由于抽象基类给出的错误而失败。
from abc import ABCMeta, abstractmethod
class Abstract(metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass
class StillAbstract(Abstract):
pass
if __name__ == '__main__':
a = StillAbstract()
知道为什么它会这样工作吗?
解决方案
推荐阅读
- wordpress - 如何将自定义按钮添加到 ACF Wysiwyg tinymce?
- macos - Xcode 网络扩展帐户
- matlab - 如何修复我的递归代码?越界错误
- ruby-on-rails - 具有两个属性之一的 Rails 用户验证,如果存在必须是唯一的
- mysql - 如何以更短更好的方式在 MySQL 中编写此代码?
- prolog - Prolog中SAT求解器的否定谓词not/2
- python - ValueError:形状不匹配:绘图时无法将对象广播到单个形状
- spark-ar-studio - 在 SparkAR 中每 5 秒更改一次纹理
- javascript - Google App Script 中的简单 Web 应用程序 - 按钮不起作用
- android - Android:如何在使用 ACTION_OPEN_DOCUMENT_TREE 打开的目录中创建文件