python 抽象基类_python3 抽象基类
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 抽象基类相关推荐
- python3创建类_python3 metaclass--创建类的过程分析
python3 metaclass--创建类的过程分析 xuewen1696 2018-06-27 15:54:20 2251 收藏 3 展开 之前学python的时候就看见过metaclass的文章 ...
- 【类、抽象与继承(练习)~python】
python 练习目录 类的练习 简单介绍-1 学生的多重身份 中西兼备的厨师 继承 练习 运行效果如下: 简单介绍-2 抽象 练习 运行效果如下: pandas 每日一练: 程序运行结果为: 31. ...
- 第七章节 类的抽象(抽象类)
一.抽象类 1.抽象类可以看做对类的抽象.抽象类的用途是提供一个可供多个派子生类共享的通用基类定义 2如果一个类中没有包含足够能描述具体对象的信息,那么就称其为抽象类. 3.在C#中抽象类使用&quo ...
- C++改变基类成员在派生类中的访问属性
使用using声明可以改变基类成员在派生类中的访问属性.我们知道基类的公有成员经过公有继承,在派生类中其属性为public的,但是通过using 声明,我们可以将其改为private或protecte ...
- CSLA.Net 3.0.5 项目管理示例 名值列表基类、只读基类、业务负责人基类
using System; using System.Data; using System.Data.SqlClient; using Csla; using Csla.Data;namespace ...
- 【设计模式】享元模式 实现 ( 实现流程 | 抽象享元类 | 具体享元类 | 享元工厂 | 用户调用 | 代码模板 )
文章目录 I . 享元模式 实现流程 II . 享元模式 抽象享元类 III . 享元模式 具体享元类 IV . 享元模式 享元工厂 V . 享元模式 用户调用 I . 享元模式 实现流程 1 . 定 ...
- C++将派生类赋值给基类(向上转型)(一)
在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值:反过来,float 类型的数据在 ...
- C++编程练习:多态实验——设计一个基类Shapes,Shapes类公有派生产生矩形类Rectangle和圆类Circle
例.设计一个基类Shapes,包含成员函数display()并声明为纯虚函数.Shapes类公有派生产生矩形类Rectangle和圆类Circle,分别定义display()函数实现其主要几何元素的显 ...
- 基类数组存放派生类_永远不要将派生类数组赋值给基类类型指针
C.152: Never assign a pointer to an array of derived class objects to a pointer to its base C.152:永远 ...
最新文章
- 计算概论c和文科计算机,计算概论与计算机程序设计基础/C语言【理工学社】
- mysql date_trunc_com.mysql.jdbc.MysqlDataTruncation: Data trunca...
- SAP Spartacus localStorage 里存储的 auth Token 过期时间
- Java零基础入门 : (2) 代码编辑器IDEA安装与配置
- 深入浅出学习Hibernate框架(二):JDBC基础操作
- 详细讲解委托和协议、看了这个我顿悟--很经典!
- 右键新建里面没有word和excel_Excel中为什么修改了新建工作簿的选项,新建以后还是没有生效...
- 【Scratch案例实操】scratch我们爱编程 scratch编程案例教学 scratch创意编程 少儿编程教案
- matlab啁啾信号,啁啾信号chirp(扫频余弦信号)
- 花生壳 Linux arm
- 秀米编辑器如何排版svg推文,以展开为模板讲解
- 关于Springboot、SpringCloud以及SpringCloud-Alibaba Nacos依赖问题
- IDEA 查看项目全部错误信息
- Unity Profiler
- c语言 调用 .cpp,C语言三方库的调用和编写
- 新注册Apple ID无法登陆 Apple Store,出现安全性提示
- Android 系统开机logo的修改
- 特征值分解与奇异值分解原理与计算
- 利用xls下载链接下载资源
- 【javaEE】网络初识