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)