zoukankan      html  css  js  c++  java
  • 封装,多态,继承. 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)





  • 相关阅读:
    袁创:如何成为黄金程序猿
    划重点!新版电子病历评级标准讲解会上6大核心要点
    台湾医院信息化见闻录
    2500行代码实现高性能数值表达式引擎
    HIT创业感言:只有长寿的企业才有持续价值
    袁创:寂静的战争
    相约南湖,南京都昌信息亮相南湖HIT论坛
    我们是谁?南京都昌信息科技有限公司!
    医疗链的系列谈 第一篇 基本概念研究
    论电子病历控件的现状和发展方向
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10325049.html
Copyright © 2011-2022 走看看