这是一种非常简单的方法,无需处理ABC模块。

在__init__要成为抽象类的类的方法中,可以检查self的“类型”。如果self的类型是基类,则调用方将尝试实例化基类,因此引发异常。这是一个简单的例子:

class Base():

def __init__(self):

if type(self) is Base:

raise Exception('Base is an abstract class and cannot be instantiated directly')

# Any initialization code

print('In the __init__  method of the Base class')

class Sub(Base):

def __init__(self):

print('In the __init__ method of the Sub class before calling __init__ of the Base class')

super().__init__()

print('In the __init__ method of the Sub class after calling __init__ of the Base class')

subObj = Sub()

baseObj = Base()

运行时,它将产生:

In the `__init__` method of the Sub class before calling `__init__` of the Base class

In the `__init__`  method of the Base class

In the `__init__` method of the Sub class after calling `__init__` of the Base class

Traceback (most recent call last):

File "/Users/irvkalb/Desktop/Demo files/Abstract.py", line 16, in

baseObj = Base()

File "/Users/irvkalb/Desktop/Demo files/Abstract.py", line 4, in `__init__`

raise Exception('Base is an abstract class and cannot be instantiated directly')

Exception: Base is an abstract class and cannot be instantiated directly

这表明您可以实例化从基类继承的子类,但不能直接实例化该基类。

python抽象类可以实例化吗,是否可以在Python中创建抽象类?相关推荐

  1. 运行python时说要建如版权_当我运行python manage.py syncdb时,Django避免在数据库中创建PointField...

    我正在使用Django 1.2.3,PostGIS 1.5.2. 出于某种原因,当我跑 python manage.py syncdb 它从我的模型创建数据库中的所有其他字段,但避免创建一个我命名为P ...

  2. python安装第三方包出现无法在安装目录中创建文件_解决pip安装的第三方包在PyCharm无法导入的问题...

    一般我们安装Python的第三方包都会在终端执行下列命令进行安装: pip install 要安装的包名 安装成功后发现在PyCharm中仍然存在找不到包的问题,为什么呢? 总之就是PyCharm找不 ...

  3. python输出不重复的单词_python-如何在文本文件中创建所有单词的列表,但字母重复的单词除外...

    我正在尝试遍历列表,并将所有单词附加到新列表中,但不包括重复字母的单词. 例: words = ['cat', 'car', 'weevil', 'lizard', 'mammoth', 'cabba ...

  4. python中用turtle绘制正方形_在Python-Turtle图形中创建正方形和旋转正方形的简单方法...

    我将提出一个与你和其他答案相反的方法,这些答案过于专注于画正方形,这将需要太多的工作来完成.因为这是一个重复的模式,我认为冲压是一种方式,就像现实生活中的重复模式一样.具体来说:from turtle ...

  5. python绘制黑白棋盘_python – 在二维数组中创建一个黑白棋盘

    是否有更好(和更短)的方式来创建像数组一样的棋盘.董事会的要求是: >板子可以是不同的尺寸(在我的例子中它是3×3) >板的左下方应始终为黑色 >黑色方块用"B" ...

  6. Python基本语法,让我们轻松入门学习Python!

    1.注释 单行注释 :以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用 # 我是注释,可以在里写一些功能说明之类的哦 print('hello world') 多行注释 :以 ...

  7. Python中的抽象类和抽象方法

    Python如何实现抽象类 在python中类 通过继承metaclass =ABCmeta类来创建抽象类,抽象类是包含抽象方法的类,其中ABCmeta类(Metaclass for defining ...

  8. python普通类实现接口_python之面向对象(接口和抽象类)

    一.接口 什么是接口 继承有两种用途: 1:继承基类的方法,并且做出自己的改变或者扩展(代码重用). 2:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

  9. python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...

    第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一. 引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不是以继 ...

最新文章

  1. squid命中率分析参数注释
  2. TensorFlow tf.nn.conv2d是怎样实现卷积的?
  3. ZOJ 3747 Attack on Titans
  4. python c 语言接口,## 人生苦短我用python[0x08] 使用ctypes调用c语言接口 ##
  5. 大厂JVM GC面试题
  6. 盘点神奇却少为人知的IntelliJ IDEA快捷键
  7. leetcode 554. 砖墙
  8. 函数调用关系图如何画_程序是如何在 CPU 中运行的(二)
  9. 树莓派运行java_【树莓派】用树莓派4可以流畅运行java版minecraft?
  10. mysql 开发进阶篇系列 23 应用层优化与查询缓存
  11. ArcGIS教程:降雨量插值
  12. 量化策略回测DualThrust
  13. 企业微信第三方应用开发
  14. docker技术简介
  15. 24道互联网大厂最爱问智商题汇总|你能答对几道?(附带答案、详解)
  16. Typora极简教程
  17. 基于RBAC 的SAAS系统权限设计
  18. 常用颜色代码表以及中国传统颜色名录
  19. 1236288-25-7 DSPE-PEG-FA Folic acid PEG DSPE 磷脂-聚乙二醇-叶酸
  20. GPS卫星运动及定位matlab仿真

热门文章

  1. java swt designerpdf_eclipse学习笔记!(4) ----- SWT Designer 下 SWT常用组件
  2. DBA警世录:备份重于一切
  3. java 工作池_Java线程池的工作原理,好处和注意事项
  4. 四边形可以分为几类_大件物流有哪些公司?大件物流公司的业务可以分为哪几类...
  5. Maven - Idea解决Maven下载依赖包速度慢问题
  6. Runnable Thread分析比较
  7. 多份word合并 保留不同页眉_如何给Word设置不同页眉和页脚?
  8. Jsp Servlet Mysql实现的学生成绩管理系统
  9. Java一键生成图表
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生课堂考勤管理系统