python类的约束

类的约束:

  • 对类的一种约束

    # 这是一个支付的方式,要求支付的接口是一样的,有着统一的付款方式,
    class Payment:
        def pay(self,money):
            raise Exception('你的子类必须有一个pay方法')  # 这是一个主动报错机制。
    
    class QQpay(Payment):
        def pay(self,money):
            print(f'你用QQ支付了{money}')
    
    class Alipay(Payment):
        def pay(self,money):
            print(f'你用支付宝支付了{money}')
    
    class Wechat(Payment):
        def fuqian(self,money):
            print(f'你用微信支付了{money}')
    
    q = QQpay()
    a = Alipay()
    w = Wechat()
    
    q.pay(300)
    a.pay(200)
    
    w.pay(600)
    
    
    # 上边的这个方法是定义一个父类,让他们继承这个父类,在父类定义一个方法,和子类的方法名相同,如果增加一个新的需求,里边的方法名不统一,当在执行这个pay时会找不到,就会去父类中找,在父类找到后就会执行父类的方法,这时父类方法中就会报出我们设置的错误
    
    # 这是一个引入抽象类的概念处理方法:
    
    from abc import ABCMeta,abstractmethod
    
    # 抽象类,接口类:强制指定规则(规范)
    class Payment(metaclass=ABCMeta):  # 指定元素
        @abstractmethod
        def pay(self,money):
            pass
    
    class QQpay(Payment):
        def pay(self,money):
            print(f'你用QQ支付了{money}')
    
    class Alipay(Payment):
        def pay(self,money):
            print(f'你用支付宝支付了{money}')
    
    class Wechat(Payment):
        def fuqian(self,money):
            print(f'你用微信支付了{money}')
    
    w = Wechat()
    w.pay(200)
    
    
    # 抽象类和接口类做的事情 :建立规范
    # 制定一个类的metaclass是ABCMeta,
    # 那么这个类就变成了一个抽象类(接口类)
    # 这个类的主要功能就是建立一个规范
    

    这种约束都是父类对子类的一个约束,如果你不继承父类就不会有这种约束

你可能感兴趣的:(python类的约束)