• 继承, 封装,多态,反射和魔法方法


    什么是继承

    继承指的是新建类的方法,新建的类称之为子类或派生类,子类继承的类叫做父类,也称之为基类或超类;

    什么是抽象

    抽象是抽取相似的部分,称之为抽象

    什么是派生

    子类继承父类的属性,并且派生出新的属性

    继承和派生的特点

    继承的特征: 子类可以继承父类的属性,并且可以派生自己的属性

    什么是重用

    子类可以重用父类的方法,通过:

    • 直接通过,父类.attr调用,需要传入对象(self)和需要的参数
    • 通过super().atrr调用,不用传入对象形参(self)

    继承的目的

    减少代码冗余

    对象,类和继承的关系

    对象是特征与技能的结合体, 类是一系列对象相同的特征与技能的结合体,继承是一些列类相同的特征与技能的结合体

    继承背景下对象属性查找顺序

    1. 优先从对象自己的名称空间中查找
    2. 若对象没有,则会从类中查找
    3. 类若没有,则从类的父类中查找
      若是多继承情况:
      经典类: 深度优先, 新式类:广度优先

    什么是经典类和新式类

    • 继承object的类是新式类
    • python3中, 默认继承object类
    • python2中,凡是没有继承object的类都是经典类

    什么是组合

    一个对象包含另外一些对象作为其属性

    组合与继承对比

    都可以避免代码冗余,组合可以解耦合

    封装

    什么是封装

    把一堆属性封装到一个对象中,利用了组合的思想

    为什么要封装

    方便存取,并可控制属性的获取(利用接口)

    python对象的访问限制机制

    什么是访问限制机制

    在定义类时,以__开头的属性,会被隐藏起来(利用改名为_Class_attr的方法), 让外部不能直接访问,但不是强制性的,可以利用(_Class_attr)的名字访问

    目的

    限制对内部重要数据获取,提供一个接口来对外提供数据

    property

    什么是property

    内部装饰器,使得内部方法的调用看起来像属性的获取

    多态

    什么是多态

    不同对象相同的属性名有不同的属性值,表现为不同的属性形态

    多态性目的

    不同对象,在使用相同功能的情况下,调用同一个名字

    多态的实现:

    -继承抽象类,
    -鸭子类型

    抽象类

    什么是抽象类

    使用abc模块的abstractmethod装饰方法的类

    目的

    强制子类必须遵循父类的标准,(必须要定义某些方法)

    如何使用

    class test(metaclass=abc.ABCMeta):
    @abstractmethod
    def func(self):
    ....

    鸭子类型

    不管对象是何种类型,当在某些属性调用接口满足能被调用的类型时,那就是鸭子类型 。
    在python中,不推荐使用抽象类强制限制子类的定义,但是推荐都遵循鸭子类型。

    继承:耦合性高,
    鸭子类型: 耦合度低

    反射

    通过字符串对对象或类的属性进行操作

    hasattr
    getattr
    setattr
    delattr
    

    魔法方法

    __init__ # 调用类时触发
    __str__ # 打印对象时触发
    __del__ # 对象被销毁时触发
    __getattr__ # 查找属性时,属性没有时触发
    __setattr__ # 设置对象属性时触发 
    __call__ # 对象被调用时触发
    __new__ # 会在__init__前执行
    
  • 相关阅读:
    DELPHI中GetTickCount 函数的应用
    Delphi 中 StrToIntDef 函数的应用
    TeeChart 动态建曲线
    历遍指定文件夹下的文件
    DELPHI 获取错误信息
    delphi播放flash
    C# 获取当前路径方法
    DELPHI 修改系统分辨率
    SQL字符串处理函数 Yang
    Linux基本操作 Yang
  • 原文地址:https://www.cnblogs.com/YajunRan/p/11650362.html
Copyright © 2020-2023  润新知