| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # -*- coding: UTF-8 -*-
- #======================= 概念 =========================#
- """
- 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化
- """
- #======================= 借助 abc模块实现抽象类 =========================#
- import abc # 利用 abc 模块实现抽象类
- class Allfile(metaclass=abc.ABCMeta):
- all_type = 'file'
- @abc.abstractmethod # 定义抽象方法,无需实现功能
- def read(self):
- '子类必须重写读功能'
- pass
- @abc.abstractmethod # 定义抽象方法,无需实现功能
- def write(self):
- '子类必须重写读功能'
- pass
- class Txt(Allfile):
- pass
- t1 = Txt() # 报错,子类没有定义抽象方法
- class Txt1(Allfile):
- def read(self):
- print('已经在子类中重写了 read 方法 ')
-
- def write(self):
- print('已经在子类中重写了 write 方法 ')
- t2 = Txt1()
- t2.read()
- #======================= 简单实现方式 =========================#
- class Base():
- def read(self):
- raise NotImplementedError(".read method 方法必须被重写")
- class A(Base):
- pass
- obj = A() # 不报错
- obj.read() # 调用方法就报错
|