一、多态
'''多态: 同一事物的多种形态'''# 文件的多种形态: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.abstractclassmethod def 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.abstractclassmethod def click(self): passclass TextFile(File): def click(self): print('文本文件双击可以查看内容')class ExeFile(File): def click(self): print('可执行文件双击可以执行')file1 = TextFile()file2 = ExeFile()file1.click()file2.click()
二、多态性