在python中实现抽象类
- 抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计
(1)导入模块
import abc
(2)不重写抽象类方法
- 其实就是在子类中不重写抽象类
import abc # 利用abc模块实现抽象类
class All_file(metaclass=abc.ABCMeta):
# 定义抽象方法,无需实现功能
@abc.abstractmethod
def read(self):
'子类必须定义该功能'
pass
# 定义抽象方法,无需实现功能
@abc.abstractmethod
def write(self):
'子类必须定义该功能'
pass
class Txt(All_file):
def read(self):
...
def write(self):
...
t1 = Txt()
(3)重写抽象类方法
- 其实就是在子类中重写抽象类
import abc
class All_File(metaclass=abc.ABCMeta):
# 定义抽象方法,无需实现功能
@abc.abstractmethod
def read(self):
print(f'读')
# 定义抽象方法,无需实现功能
@abc.abstractmethod
def write(self):
print(f'写')
# 子类继承抽象类,但是必须定义read和write方法
class Txt(All_File):
def read(self):
print('文本数据的读取方法')
def write(self):
print('文本数据的读取方法')
# 子类继承抽象类,但是必须定义read和write方法
class Sata(All_File):
def read(self):
print('硬盘数据的读取方法')
def write(self):
print('硬盘数据的读取方法')
# 子类继承抽象类,但是必须定义read和write方法
class Process(All_File):
def read(self):
print('进程数据的读取方法')
def write(self):
print('进程数据的读取方法')
test_file = Txt()
video_file = Sata()
process_file = Process()
# 这样大家都是被归一化了,也就是一切皆文件的思想
test_file.read() # 文本数据的读取方法
video_file.write() # 硬盘数据的读取方法
process_file.read() # 进程数据的读取方法
标签:abc,read,self,write,抽象类,def
From: https://www.cnblogs.com/ssrheart/p/17947907