一、多态
''' 多态:同一事物的多种形态 '''# 文件的多种形态:class File:def click(self):passclass TextFile(File):def read(self):print('文本文件双击可以查看内容')class ExeFile(File):def exe(self):print('可执行文件双击可以执行')file1 = TextFile() file2 = ExeFile()file1.read() file2.exe()# 上面的代码,其实子类压根没用到父类的功能,多态应用如下import abcclass File(metaclass=abc.ABCMeta): # 同一类事物:文件 @abc.abstractclassmethoddef click(self):passclass TextFile(File):def read(self):print('文本文件双击可以查看内容')class ExeFile(File):def exe(self):print('可执行文件双击可以执行')file1 = TextFile() file2 = ExeFile()''' 使用abc模块,指定metaclass=ab.ABCMeta,如果子类没有用到父类的功能则会报错TypeError: Can't instantiate abstract class TextFile with abstract methods click '''# 修改如下: import abcclass File(metaclass=abc.ABCMeta): # 同一类事物:文件 @abc.abstractclassmethoddef click(self):passclass TextFile(File):def click(self):print('文本文件双击可以查看内容')class ExeFile(File):def click(self):print('可执行文件双击可以执行')file1 = TextFile() file2 = ExeFile() file1.click() file2.click()
二、多态性