• Python高级编程技巧


    深入类和对象
    鸭子类型和多态
    多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型"

    动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。

    所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。

    抽象基类(abc模块)
    抽象基类(abstract base class,ABC):抽象基类就是类里定义了纯虚成员函数的类。纯虚函数只提供了接口,并没有具体实现。抽象基类不能被实例化(不能创建对象),通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口。

    抽象基类就是定义各种方法而不做具体实现的类,任何继承自抽象基类的类必须实现这些方法,否则无法实例化。

    应用场景

    • 判断某个对象的类型
    • 我们需要强制某个子类必须实现某些方法
      使用isinstance和type的区别
    i = 1
    s = 'a'
    isinstance(i,int)   
    isinstance(s,str)  
    isinstance(s,int)  
    

    类变量和对象变量

    class A:
        aa = 1
        
        def __init__(self,x,y):
            self.x = x
            self.y = y
    

    类属性和实例属性以及查找顺序
    MRO算法

    Python2.2之前的算法:金典类

    DFS(deep first search):A->B->D->C->E

    Python2.2版本之后,引入了BFS(广度优先搜索)

    BFS:A->B->C->D

    在Python2.3之后,Python采用了C3算法

    Python新式类继承的C3算法:https://www.cnblogs.com/blackmatrix/p/5644023.html

    Python对象的自省机制
    自省是通过一定的机制查询到对象的内部结构

    Python中比较常见的自省(introspection)机制(函数用法)有: dir(),type(), hasattr(), isinstance(),通过这些函数,我们能够在程序运行时得知对象的类型,判断对象是否存在某个属性,访问对象的属性。

    super函数
    在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现

  • 相关阅读:
    聊聊关于性能优化和其他(一)
    JavaScript 事件循环及异步原理(完全指北)
    SPA路由机制详解(看不懂不要钱~~)
    Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
    Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)
    浅谈Generator和Promise原理及实现
    Kubernetes 服务目录
    Kubernetes 网络模型
    个人开源贡献记录
    【转载】DTO – 服务实现中的核心数据
  • 原文地址:https://www.cnblogs.com/sakura579/p/12434389.html
Copyright © 2020-2023  润新知