一、多态
'''
多态:
同一事物的多种形态
'''
# 文件的多种形态:
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()
二、多态性