抽象类

什么是抽象类

与java一样,python也有抽象类的概念。抽象类是一种特殊的类,它只能有抽象方法,不能被实例化,在子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。

抽象类的作用

抽象类可以实现多个子类中共用的部分,而不需要重复写到实现类中。

从设计角度去看,抽象类是基于类抽象而来的,是实现类的基类。

从实现角度来看,抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且实现子类必须继承并实现抽象类的方法。

python 3可以利用abc抽象基类实现,python文档说明:abc — 抽象基类

# 利用abc模块实现抽象类
from abc import ABCMeta
from abc import abstractmethod


class AllFile(metaclass=ABCMeta):
    """
    抽象类
    """
    type = 'file'

    @abstractmethod
    def read(self):
        """
        子类必须定义读功能
        :return:
        """
        pass

    @abstractmethod
    def write(self):
        """
        子类必须定义写功能
        :return:
        """
        pass


class File(AllFile):
    """
    子类继承抽象类,但是必须定义read和write方法
    """

    def read(self):
        print('文本数据的读取方法')

    def write(self):
        print('文本数据的读取方法')


txt = File()

txt.read()

print(txt.type)

上述程序运行输出

文本数据的读取方法
file

如果子类继承抽象类时,没有实现抽象方法,在调用子类时会报错

class Txt(All_file):
    pass
    
# 报错,子类没有定义抽象方法
txt1=Txt()