python--抽象类,接口类

python 没有接口这个概念

接口类,抽象类: 制定一个规范.

第一版

复制代码
class Alipay:
    def __init__(self, money):
        self.money = money

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


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

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


a1 = Alipay(200)
a1.pay()
j1 = Jdpay(100)
j1.pay()
复制代码

结果:

使用支付宝支付了200
使用京东支付了100

第二版  改进,让你支付的方式一样

复制代码
class Alipay:
    def __init__(self, money):
        self.money = money

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


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

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


def pay(obj):
    obj.pay()


a1 = Alipay(200)
j1 = Jdpay(100)
pay(a1)  # 归一化设计,通过调用pay函数,执行对应类下的方法,类名.方法
pay(j1)
复制代码

结果:

使用支付宝支付了200
使用京东支付了100

第三版,制定规则,抽象类,接口类

复制代码
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)


def pay(obj):
    obj.pay()


w1 = Wechatpay(200)
a1 = Alipay(200)
j1 = Jdpay(100)
pay(a1)  # 归一化设计
pay(j1)
复制代码

结果:

使用支付宝支付了200
使用京东支付了100

下面的类都继承了Payment类,Payment下面有个pay方法,使用了装饰器,如果继承了Payment类的类下面没有pay方法,实例化子类的时候会报错

posted @   邹邹很busy。  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示