zoukankan      html  css  js  c++  java
  • 实现抽象类之方式一

    # 抽象类:
        # 是一个开发的规范,约束它的所有子类必须实现一些和它同名的方法
    
    class Pay(object):   # 抽象类
        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')
  • 相关阅读:
    oracle 创建视图、修改视图、删除视图、利用视图操作基本表
    FileZilla Server的安装和设置
    js网站
    图解局域网共享设置步骤
    PLSQL连接ORACLE详解
    PLSQL Developer图形化窗口创建数据库全过程
    60多个精品源码站
    日历控件
    LINQ 101例子
    SharpZipLib压缩打包多个文件
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13537387.html
Copyright © 2011-2022 走看看