zoukankan      html  css  js  c++  java
  • Python -- 面向对象的三大特性及深入了解super()

    面向对象的三大特性:继承(在上节),封装,多态

    封装:将一些东西内容封装到一个地方,还可以取出来(例如:类设置静态属性,设置一些方法)

    ​ 调用被封装的内容,有两种情况: 1. 通过对象直接调用 2. 通过self间接调用

    多态:一个事物的多种形态,Python中默认支持多态.

    鸭子类型(面试会问): A,B两个类,没有任何关系(完全没有耦合性),独立的两个,但里面的功能相似,所以Python一般会将类似于A,B两个类里面的相似的功能设定相同的名字,A,B虽然没有关系,但是在某种意义上统一了一个标准,用起来更方便.

    super()深入了解

    super() 严格意义并不是执行父类方法

    • 单继承: super() 执行父类的方法
    • 多继承: super(S,self) 严格按照self 从属于的类的mro的执行顺序,执行S的下一位.
    # super() 多继承举例
    class A:
        def f1(self):
            print('in A')
    
    class Foo(A):
        def f1(self):
            super().f1()
            print('in Foo')
    
    class Bar(A):
        def f1(self):
            print('in Bar')
    
    class Info(Foo,Bar):
        def f1(self):
            super(Foo,self).f1()  #执行Foo 的下一位是 Bar
            print('in Info f1')
    
    obj = Info()
    obj.f1()        # Info 的 mro 顺序 Info,Foo,Bar,A
    # in Bar
    # in Info f1
    
  • 相关阅读:
    C++ 虚函数表解析
    C#编写简单的聊天程序
    c#事件与委托
    c#文本控件实现换行
    docker 详细安装及问题排查
    hadoop命令行
    Spark中的多线程并发处理
    CDH6.1.0离线安装——笔记
    linux 常用命令
    Rsync 恢复 libselinux.SO.1
  • 原文地址:https://www.cnblogs.com/Agoni-7/p/11173879.html
Copyright © 2011-2022 走看看