1,抽象基类(Abstract base class或者 ABCs)用于

定义一组必须被类的“鸭子类型”实例实现的方法与属性,可以继承抽象基类本身的类作为类的实例,但是必须提供所有适合的方法。

from collections.abc import Container

class TestContainer:

def __contains__(self,x):

return True

myContainer =TestContainer()

print(isinstance(myContainer,Container)) #True

print(issubclass(TestContainer,Container)) #True

这种就是鸭子类型比传统多态更棒的原因,可以不使用继承关系就你能创建 “是一个”的关系。

2, 创建抽像基类

import abc

class TestAbc(metaclass=abc.ABCMeta):

@abc.abstractmethod

def play(self):

pass

@abc.abstractproperty

def name(self):

pass

# ta=TestAbc()

# print(ta)

class MyAbc(TestAbc):

name="kule"

def play(self):

print("play...")

# mt=MyAbc()

print(isinstance(MyAbc(),TestAbc)) #True

print(issubclass(MyAbc,TestAbc)) #True

MyAbc 是TestAbc的子类,但是没有真正继承TestAbc。

常见的面向对象语言通常在类的接口和接口的实现上有明确的区分,例如interface关键字,用于定义类必须包含的方法,但是不需要实现,这样就抽象出来了一个接口。

任何类都可以明确声明它实现自某个接口。

python的ABCs帮助提供接口的功能,同时也保留了鸭子类型的特点。

标签:abc,TestAbc,抽象,基类,print,True,python3,MyAbc

来源: https://blog.csdn.net/C2575/article/details/111869979

python 抽象基类_python3 抽象基类相关推荐

  1. python3创建类_python3 metaclass--创建类的过程分析

    python3 metaclass--创建类的过程分析 xuewen1696 2018-06-27 15:54:20 2251 收藏 3 展开 之前学python的时候就看见过metaclass的文章 ...

  2. 【类、抽象与继承(练习)~python】

    python 练习目录 类的练习 简单介绍-1 学生的多重身份 中西兼备的厨师 继承 练习 运行效果如下: 简单介绍-2 抽象 练习 运行效果如下: pandas 每日一练: 程序运行结果为: 31. ...

  3. 第七章节 类的抽象(抽象类)

    一.抽象类 1.抽象类可以看做对类的抽象.抽象类的用途是提供一个可供多个派子生类共享的通用基类定义 2如果一个类中没有包含足够能描述具体对象的信息,那么就称其为抽象类. 3.在C#中抽象类使用&quo ...

  4. C++改变基类成员在派生类中的访问属性

    使用using声明可以改变基类成员在派生类中的访问属性.我们知道基类的公有成员经过公有继承,在派生类中其属性为public的,但是通过using 声明,我们可以将其改为private或protecte ...

  5. CSLA.Net 3.0.5 项目管理示例 名值列表基类、只读基类、业务负责人基类

    using System; using System.Data; using System.Data.SqlClient; using Csla; using Csla.Data;namespace ...

  6. 【设计模式】享元模式 实现 ( 实现流程 | 抽象享元类 | 具体享元类 | 享元工厂 | 用户调用 | 代码模板 )

    文章目录 I . 享元模式 实现流程 II . 享元模式 抽象享元类 III . 享元模式 具体享元类 IV . 享元模式 享元工厂 V . 享元模式 用户调用 I . 享元模式 实现流程 1 . 定 ...

  7. C++将派生类赋值给基类(向上转型)(一)

    在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值:反过来,float 类型的数据在 ...

  8. C++编程练习:多态实验——设计一个基类Shapes,Shapes类公有派生产生矩形类Rectangle和圆类Circle

    例.设计一个基类Shapes,包含成员函数display()并声明为纯虚函数.Shapes类公有派生产生矩形类Rectangle和圆类Circle,分别定义display()函数实现其主要几何元素的显 ...

  9. 基类数组存放派生类_永远不要将派生类数组赋值给基类类型指针

    C.152: Never assign a pointer to an array of derived class objects to a pointer to its base C.152:永远 ...

最新文章

  1. 计算概论c和文科计算机,计算概论与计算机程序设计基础/C语言【理工学社】
  2. mysql date_trunc_com.mysql.jdbc.MysqlDataTruncation: Data trunca...
  3. SAP Spartacus localStorage 里存储的 auth Token 过期时间
  4. Java零基础入门 : (2) 代码编辑器IDEA安装与配置
  5. 深入浅出学习Hibernate框架(二):JDBC基础操作
  6. 详细讲解委托和协议、看了这个我顿悟--很经典!
  7. 右键新建里面没有word和excel_Excel中为什么修改了新建工作簿的选项,新建以后还是没有生效...
  8. 【Scratch案例实操】scratch我们爱编程 scratch编程案例教学 scratch创意编程 少儿编程教案
  9. matlab啁啾信号,啁啾信号chirp(扫频余弦信号)
  10. 花生壳 Linux arm
  11. 秀米编辑器如何排版svg推文,以展开为模板讲解
  12. 关于Springboot、SpringCloud以及SpringCloud-Alibaba Nacos依赖问题
  13. IDEA 查看项目全部错误信息
  14. Unity Profiler
  15. c语言 调用 .cpp,C语言三方库的调用和编写
  16. 新注册Apple ID无法登陆 Apple Store,出现安全性提示
  17. Android 系统开机logo的修改
  18. 特征值分解与奇异值分解原理与计算
  19. 利用xls下载链接下载资源
  20. 【javaEE】网络初识

热门文章

  1. 递归,就这样被wo征服^_^
  2. 可能是全网最好用的ViewPager控件?老司机们来验验成色
  3. 汽车驾驶技术图文详解
  4. Redis-22Redis-集群管理
  5. 什么样的团队才是优秀的团队
  6. 【C51自学笔记】中断系统
  7. 文件组织:索引顺序文件
  8. 大数据分析工具Power BI(十二):制作趋势分析图表
  9. 窗函数法设计FIR数字滤波器
  10. 几款好用到爆炸的Google Chrome插件