标签:rac ror abs meta pass read 模块 import textfile
‘‘‘ 多态: 同一事物的多种形态 ‘‘‘ # 文件的多种形态: class File: def click(self): pass class TextFile(File): def read(self): print(‘文本文件双击可以查看内容‘) class ExeFile(File): def exe(self): print(‘可执行文件双击可以执行‘) file1 = TextFile() file2 = ExeFile() file1.read() file2.exe() # 上面的代码,其实子类压根没用到父类的功能,多态应用如下 import abc class File(metaclass=abc.ABCMeta): # 同一类事物:文件 @abc.abstractclassmethod def click(self): pass class 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 abc class File(metaclass=abc.ABCMeta): # 同一类事物:文件 @abc.abstractclassmethod def click(self): pass class TextFile(File): def click(self): print(‘文本文件双击可以查看内容‘) class ExeFile(File): def click(self): print(‘可执行文件双击可以执行‘) file1 = TextFile() file2 = ExeFile() file1.click() file2.click()
标签:rac ror abs meta pass read 模块 import textfile
原文地址:https://www.cnblogs.com/lichunke/p/9531241.html