python中如何使用抽象类?

github学习笔记

1. 什么事抽象类?

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

2. 在Python中我们应该如何使用抽象类了?
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   interface.py
@Time    :   2022/09/12 21:21:05
@Author  :   scliang 
@Desc    :   None
'''

# here put the import lib
# 引入抽象类
from abc import ABCMeta, abstractmethod

class Payment(metaclass=ABCMeta):
    # abstract class
    @abstractmethod
    def pay(self,money):
        pass


# 实现抽象类
# 实现抽象类必须实现抽象类中的所有方法
class AliPay(Payment):
    def pay(self,money):
       print("支付宝支付%d" %money)

class WechatPay(Payment):
    def pay(self, money):
        print("微信支付%d元" % money)



# 直接实例化一个抽象类会直接报错
# p = Payment()
# print("abstract method:",p)
'''
Traceback (most recent call last):
  File "F:\GoProjects\src\MyPractiseNotes\设计模式\interface.py", line 33, in <module>
    p = Payment()
TypeError: Can't instantiate abstract class Payment with abstract method pay
'''

# 可以实例化抽象类的实现类
p = AliPay()
p.pay(100)

"""
PS F:\GoProjects\src\MyPractiseNotes\设计模式> python .\interface.py
支付宝支付100
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值