Python面向对象之接口类(抽象类)

Python面向对象之接口类(抽象类):就是制定一个规范。

比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因)。
他的定义是需要abc模块,要变的就是他的方法,比如下面的pay方法,
定义好一个抽象类(接口类)Payment,他用装饰器@abstractmethod将pay方法装饰
这样,其他类如果都继承了Payment方法,其他类中就都需要有一个pay方法,如果没有就会报错。

就好比,起初我没有微信支付类,但是如果后续项目需要加微信支付此功能,支付的方法我可以起各种名字。
但是为了统一支付接口,我们继承抽象类Payment后,我们的支付接口名就必须用pay.

这就是接口类(抽象类的用途)

from abc import ABCMeta, abstractmethod


class Payment(metaclass=ABCMeta):  # 抽象类(接口类)
    @abstractmethod
    def pay(self):  # 制定一个规范
        pass


class Alipay(Payment):
    def __init__(self, money):
        self.money = money

    def pay(self):
        print('使用支付宝花了%s钱' % (self.money,))


class Jdpay(Payment):
    def __init__(self, money):
        self.money = money

    def pay(self):
        print('使用京东支付了%s钱' % (self.money,))


class Wechatpay(Payment):
    def __init__(self, money):
        self.money = money

    def pay(self):
        print('使用微信支付了%s钱' % (self.money,))

w1 = Wechatpay(200)
a1 = Alipay(150)
j1 = Jdpay(100)
w1.pay()
a1.pay()
j1.pay()

猜你喜欢

转载自www.cnblogs.com/xiao-xue-di/p/9371854.html