python中的抽象类
Python 抽象类
2023-09-11 14:19:19 时间
抽象类专门用于继承
定义
- python有一个专门的模块
ABC
来专门定义抽象类 - 一般继承的时候,强制让重写某个方法和属性,那么就需要抽象方法和抽象属性属性
from abc import ABC,abstractclassmethod
class Animal(ABC):
@abstractclassmethod
def say_name():
pass
- 在这里Animal就是抽象类
- 抽象类需要继承基类ABC
- 抽象类中不一定都是抽象方法,也可以是具体方法
- say_name就是抽象方法
- 需要使用
abstractclassmethod
进行修饰
- 需要使用
如果类中有抽象方法,那么这个类是不能实例化的
animal = Animal()
TypeError: Can’t instantiate abstract class Animal with abstract methods say_name
继承
- 继承抽象类就必须时间抽象类中的抽象方法
class Dog(Animal):
# 普通方法
def work():
print("i am work")
dog = Dog()
- 当前类没有实现抽象方法,实例化就报错
class Dog(Animal):
# 普通方法
def work():
print("i am work")
dog = Dog()
报错
TypeError: Can't instantiate abstract class Dog with abstract methods say_name
实现后则不会报错
class Dog(Animal):
# 普通方法
def work():
print("i am work")
def say_name():
print("i am WangCai")
dog = Dog()
当然我们还可以用类方法实现
class Dog(Animal):
# 普通方法
def work():
print("i am work")
@classmethod
def say_name():
print("i am WangCai")
dog = Dog()
只要实现了这个方法,那么就是可以的
抽象属性
除了抽象方法外,我们还可以有抽象属性,抽象属性也必须重写
from abc import ABC,abstractproperty
class Animal(ABC):
@abstractproperty
def ear():
return "animal ear"
子类
class Dog(Animal):
@property
def ear():
return "dog ear"
dog = Dog()
相关文章
- Python 爬虫 BeautifulSoup4 库的使用
- Python中python-nmap模块的使用
- Python脚本写端口扫描器(socket,python-nmap)
- python魔法方法之-Python __repr__()方法:显示属性
- python可变类型和不可变类型的区别
- Python任意参数的数量/预习课python基础
- 地球引擎初级教程——Python API 语法(内涵JavaScript转python工具包介绍)
- Google Earth Engine(python)——用 Python 修复影像栅格的接缝
- Python怎么就火起来了?学会python可以做的兼职
- 【零基础学python】:清华官方出品的《看漫画学Python》全彩PDF,495页资源分享
- 如何快速学习python,学好python?能通过Python赚到的第一笔钱,有哪些经验可以分享吗?
- 原创 Python在线学习可以吗?靠不靠谱?
- 将自己OpenCV-Python-PyCharm开发环境的Python-3.6.8更换为python-3.9.10的详细过程记录
- 94 python高级 - 进制
- Python For Data Analysis -- Pandas
- Python 数据提取 -lxml模块
- Python 对象 引用 标识符
- Python 进制转换 二进制 八进制 十进制 十六进制
- Python之zip
- caffe的python接口学习(1):生成配置文件
- 《Python游戏编程快速上手》一2.1 一些简单的数学知识
- 《贝叶斯思维:统计建模的Python学习法》一1.7 Monty Hall难题
- Python 流程控制
- Python机器学习零基础理解逻辑回归分析
- Python 数据分析教程之如何验证线性回归的假设,线性回归的假设是什么?以及如何用python验证它们?
- Python教程之Python 中有效地存储 Pandas 数据帧
- Python代码大全之如何合并append两个字典
- Python基础之:Python中的IO
- 【Python分布式服务框架】python实现gRPC服务
- 【Python基础】我的第一个 python 程序
- python实现QQ自动发送消息
- Python用python-docx读写word文档
- python简单验证码识别两种方法
- 记录python接口自动化测试--把测试结果写进excel文件(第九目)
- [Python]python+yaml三行代码完成配置文件灵活读取与warning:YAMLLoadWarning处理