ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实现抽象类之方式二

2020-08-20 19:34:43  阅读:217  来源: 互联网

标签:__ name 方式 实现 pay self money 抽象类 def


from abc import ABCMeta, abstractmethod


class Pay(metaclass=ABCMeta):   # 这种方式约束力强,但是依赖abc模块
    @abstractmethod
    def pay(self, money):
        """只要见到项目中有这种类,你的子类中必须实现和play同名的方法"""
        raise NotImplementedError('请在子类中重写与父类同名的方法')


class AliPay(Pay):
    def __init__(self, name):
        self.name = name

    def pay(self, money):
        dic = {'uname':self.name, 'price':money}
        print(f'{self.name}通过支付宝成功支付{money}元!')


class WeChatPay(Pay):
    def __init__(self, name):
        self.name = name

    def pay(self, money):
        dic = {'uname':self.name, 'price':money}
        print(f'{self.name}通过微信成功支付{money}元!')


class ApplePay(Pay):
    def __init__(self, name):
        self.name = name

    def pay(self, money):
        dic = {'uname': self.name, 'price': money}
        print(f'{self.name}通过苹果支付支付了{money}元!')


# aw = WeChatPay('alex')
# aw.pay(400)
#
# aa = AliPay('wusir')
# aa.pay(300)

# 归一化设计:
def pay(name, price, pay_kind):
    if pay_kind == 'WeChat':
        obj = WeChatPay(name)

    elif pay_kind == 'AliPay':
        obj = AliPay(name)

    elif pay_kind == 'ApplePay':
        obj = ApplePay(name)

    obj.pay(price)


pay('alex', 400, 'WeChat')
pay('wusir', 300, 'AliPay')
pay('eva-j', 500, 'ApplePay')

 

标签:__,name,方式,实现,pay,self,money,抽象类,def
来源: https://www.cnblogs.com/GOD-L/p/13537392.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有