抽象类.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: UTF-8 -*-
  2. #======================= 概念 =========================#
  3. """
  4. 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化
  5. """
  6. #======================= 借助 abc模块实现抽象类 =========================#
  7. import abc # 利用 abc 模块实现抽象类
  8. class Allfile(metaclass=abc.ABCMeta):
  9. all_type = 'file'
  10. @abc.abstractmethod # 定义抽象方法,无需实现功能
  11. def read(self):
  12. '子类必须重写读功能'
  13. pass
  14. @abc.abstractmethod # 定义抽象方法,无需实现功能
  15. def write(self):
  16. '子类必须重写读功能'
  17. pass
  18. class Txt(Allfile):
  19. pass
  20. t1 = Txt() # 报错,子类没有定义抽象方法
  21. class Txt1(Allfile):
  22. def read(self):
  23. print('已经在子类中重写了 read 方法 ')
  24. def write(self):
  25. print('已经在子类中重写了 write 方法 ')
  26. t2 = Txt1()
  27. t2.read()
  28. #======================= 简单实现方式 =========================#
  29. class Base():
  30. def read(self):
  31. raise NotImplementedError(".read method 方法必须被重写")
  32. class A(Base):
  33. pass
  34. obj = A() # 不报错
  35. obj.read() # 调用方法就报错