【Python】python中抽象类学习笔记

什么是抽象类

  1. 抽象类是一个不能被实例化的类,通常作为其他类的基类
  2. 抽象方法是一个没有具体实现的方法
  3. 一个抽象类可以有或者没有抽象方法, 但是一般来说定义抽象类的时候总会在类中定义抽象方法
  4. Python并没有直接支持抽象类,但是提供了一个模块(abc)来允许定义抽象类

如何定义抽象类

通过继承abc.ABC类定义一个抽象类

from abc import ABC
class AbstractClassName(ABC):
    pass

上述代码中AbstractClassName类虽然继承了ABC但是没有定义抽象方法,仍然可以被实例化。可以在抽象类中定义抽象方法,可以防止抽象类被实例化:

from abc import ABC,abstractmethod

class Action(ABC):
    """使用@abstractmethod来定义抽象方法
    """
    @abstractmethod
    def execute(self):
        pass

def main():
    action = Action()

if __name__ == "__main__":
    main()

代码报错:不能实例化一个带有抽象方法的抽象类

TypeError: Can't instantiate abstract class Action with abstract methods execute

抽象类使用示例

from abc import ABC,abstractmethod

class Action(ABC):

    '''定义一个抽象方法,这是子类必须实现的
    '''
    @abstractmethod
    def execute(self):
        pass

class CreateStudentAction(Action):
    def execute(self):
        print("create new student")

class DeleteStudentAction(Action):
    def execute(self):
        print("delete a student")

def execut_action(action: Action):
    '''对于这个函数来说, 需要的参数必须是Action类的对象
    '''
    action.execute()

def main():
    create_student_action = CreateStudentAction()
    delete_student_action = DeleteStudentAction()

    execut_action(create_student_action)
    execut_action(delete_student_action)

if __name__ == "__main__":
    main()

对于设计者来讲,只需要把Action这个接口定义好
总结:

  1. 当需要定义一组子类时,抽象类非常有用,确保所有子类遵循相同的接口
  2. 在抽象类中定义一些通用的方法和属性,可以在所有子类中共享

本文参考:
https://www.bilibili.com/video/BV1GW4y147M2/?spm_id_from=333.788&vd_source=cf0b4c9c919d381324e8f3466e714d7a

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值