• 封装,多态,继承. super的方法,类的约束,


    1.python的三大特性:
    python的三大特性,封装,多态,继承
    封装:函数 模块 类 对象
    多态 : python中默认支持多态
    继承: python中的子类继承父类属性和方法

    鸭子类型: 看着像鸭子,它就是鸭子
    python中处处都是鸭子
    # 两者之间没有任何关系,但是都遵循着一个隐形的标准
    两个类中的鸭子类型:
    # 优点:1,统一标准,减少了词汇量
    # 2,两者之间没有任何耦合性,但是可以产生关系,其中一个的对象可以调用另一个类的方法
    # 其他例子 :index pop clear


    2. super的用法:
    
        super(A类,self).方法 跳过A类,按照mro的顺序执行下一类的方法
          #可以执行非本类方法的方法必须在有继承关系的类中使用
    class A:
        def eat(self):
            print('eat A')
    class B(A):
        def eat(self):
            super(B,self).eat()     #跳过B类,按照mro的顺序执行0
            print('eat B')
    obj = B()
    obj.eat()
    print(B.mro())  #[<class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
    #查看mro的顺序 类名+ . + mro +()

    3. 类的约束:有两种方法
    第一种:raise Exception 抛出异常
    在父类中定义好子类要有的方法
    class Payment:
        def pay(self,money):
            raise Exception('子类要定义pay的方法')
    class A(Payment):
        def pay(self,money):      #Exception: 子类要定义pay的方法
            print(111)
    class B(Payment):
        def zhifu(self,money):
            pass
    def pay(obj,money):
        obj.pay(money)
    obj1 = B()
    pay(obj1,100)


    第二种:抽象类 接口类 :制定一个规范,强制子类必须有pay方法,如果没有,在你实例化的时候就会报错
    from abc import ABCMeta,abstractmethod
    class A(metaclass=ABCMeta): #父类里面的抽象方法,子类一定要实现
        @abstractmethod#抽象方法    #强制子类执行eat,chi方法,没有就报错
        def eat(self,money):
            print(111)
        @abstractmethod
        def chi(self,money):
            pass
    class B(A):
        def eat(self,money):
            pass
    class C(A):
        def eat(self,money):
            pass
        def chi(self,money):
            print(111)
    def eat(obj,money):
        obj.chi(money)
    obj1 = B()
    eat(obj1,100)





  • 相关阅读:
    Git远程仓库的使用(github为例)
    SQL查看数据库中每张表的数据量和总数据量
    HTML简单的注册页面搭建
    java新建日期获取工具
    ArrayList的使用方法技巧(转载)
    UI初级 TextField
    UI初级 Label
    UI入门 纯代码 第一节 UIWindow, UIView
    C 入门 第十一节
    secoclient安装mac版提示系统配置文件写入失败的解决方案
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10325049.html
Copyright © 2020-2023  润新知