python抽象类——abstractmethod方法和应用

Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。通过定义抽象类,我们可以约定子类必需实现的方法。从abc模块导入ABC类,和abstractmethod抽象方法装饰器

抽象类作用:

  • 抽象类就是控制子类的方法的名称,要求子类必须按照父类的要求的实现指定的方法,且方法名要和父类保持一致

注意:

  • 抽象类不能实例化
  • 继承抽象类的子类,如果没有重写所有(abstractmethod装饰的方法都得实现)抽象方法,则这个类也是抽象的,不能实例化。

具体应用:
假如你在商城买了东西,付款的方式可以选择微信,支付宝,苹果支付三种。在支付的时候,就需要调用不同的接口,无法做到统一入口。此时可以用到抽象类的思想。调用支付方法时,实例化不同的对象去调用同一个名称的接口。

from abc import ABC, abstractmethod


class Pay(ABC):
    @abstractmethod
    def pay(self, amount):
        pass


class AliPay(Pay):
    def pay(self, amount):
        print(f"支付宝支付{amount}元")


class WetPay(Pay):
    def pay(self, amount):
        print(f"微信支付{amount}元")


class ApplePay(Pay):
    def pay(self, amount):
        print("这是华为支付{amount}")


def pay(obj, amount):
    obj.pay(amount)


if __name__ == "__main__":
    ali_pay = AliPay()
    wet_apy = WetPay()
    pay(ali_pay, 100)
    pay(wet_apy, 1000)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值