一.内容回顾

  初识继承

    父类\基类\超类

    子类\派生类

    派生 :派生方法.派生属性

    单继承

      继承的语法class子类名(父类名)

      解决开发中代码冗余的问题

      子类继承了父类之后,可以调用父类中的方法

      如果子类的对象调用某个方法:对象/自己类/父类

      如果子类的对象调用的某个方法父子类中都有:

        正常情况下是用自己的

        想用父类的:

          super().方法名()

          父类名.方法名(self)

      继承表达的是两个类之间 父类子类的关系

二.今日内容

    抽象类:规则

      约束了所有继承这个抽象类的子类必须实现某些同名方法

# from abc import ABCMeta,abstractmethod
# class Abstract(metaclass=ABCMeta): # metaclass 元类
# @abstractmethod
# def func_name(self):
# print('继承Abstract的子类中必须有一个func_name的方法')
# class Son(Abstract):
# def func_name(self):
# print('继承了Abstract就必须写一个func_name方法')

    接口类(对多个抽象类的多继承)    

# class Abstract1(metaclass=ABCMeta):   # metaclass 元类
# @abstractmethod
# def wahaha(self):
# print('继承Abstract1的子类中必须有一个wahaha的方法')
# class Abstract2(metaclass=ABCMeta): # metaclass 元类
# @abstractmethod
# def qqxing(self):
# print('继承Abstract2的子类中必须有一个qqxing的方法')
# class Son(Abstract1,Abstract2):
# def wahaha(self):
# print('继承Abstract1的子类中必须有一个wahaha的方法')
# def qqxing(self):
# print('继承Abstract2的子类中必须有一个qqxing的方法')
# 归一化设计
# class Student:
# def login(self):pass
# class Teacher:
# def login(self):pass
# def login(obj):
# obj.login()
# a = Student()
# a.login()
# b = Teacher()
# b.login()
# c3算法
# 求某一类在多继承中的继承顺序:
# 类的mro== [类] + [父类的继承顺序] + [父类2的继承顺序]....
# 如果从左到右的第一个类在后面的顺序中都没出现,那么就提出来到mro顺序中
# [ABCD] + [EO] --> A = [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,且在后面的顺序中也是第一位,那么就提出来到mro顺序中
# [ABCD] + [AEO] --> A = [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,但不是在第一位,那么应该继续往后找,找到符合规则的项目
# [ABCD] + [EAO] --> E = [ABCD] + [AO]
# [ABCD] + [EAO] + [GEO] --> G = [ABCD] + [EAO] + [EO]
# [ABCD] + [EAO] + [EO] --> GE = [ABCD] + [AO] + [O]
# 关键结论:
# 这个类没有发生继承,他的顺序永远是[类O]
# 只要是单继承,不是多继承,那么mro顺序就是从子类到父类的顺序

day29 Pyhton 面向对象 继承进阶的更多相关文章

  1. day30 Pyhton 面向对象 继承.装饰器

    一面向对象相关 谈谈你对面向对象的理解 1.泛泛谈:什么情况下使用面向对象 2.针对面向对象的 封装 继承 多态一个一个的谈 3.根据你工作中的实际情况对应来举例子 封装 1.广义上:普遍的大家认为的 ...

  2. day28 Pyhton 面向对象 继承

    1.昨日回顾 类的命名空间 静态属性\动态属性(方法) 对象的命名空间 #对象的属性 #类指针:对象能够通过这个类指针找到类 #静态属性:属于类,多个对象共享这个资源 #尽量用类名来操作静态属性 #对 ...

  3. day29 Pyhton 面向对象 多态 封装

    # coding:utf-8 # py2中的经典类 # class D:#没有继承object是经典类# pass # # def func(self): # # print('d') # class ...

  4. [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类

    [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...

  5. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  6. python学习第十六天 --继承进阶篇

    这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...

  7. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  8. 【转】python 面向对象(进阶篇)

    [转]python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 ...

  9. python 继承进阶

    继承进阶 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例    对象名:调用对象属性 调用方法 3 ...

随机推荐

  1. 20190923-02Linux文件目录类 000 010

    pwd 显示当前工作目录的绝对路径 pwd:print working directory 打印工作目录 1.基本语法 pwd (功能描述:显示当前工作目录的绝对路径) 2.案例实操 (1)显示当前工 ...

  2. java 将本地文件或网络文件与base64互相转换

    一:将网络文件转为Base64 将文件转为base64 public static String fileToBase64(String url){ int byteread = 0; String ...

  3. Go Http包解析:为什么需要response.Body.Close()

    简单来讲就是:为了提高效率,http.Get 等请求的 TCP 连接是不会关闭的(再次向同一个域名请求时,复用连接),所以必须要手动关闭. 2019-01-24 10:43:32 更新 不管是否使用 ...

  4. 动手编写—动态数组(Java实现)

    目录 数组基础回顾 自定义动态数组 动态数组的设计 抽象父类接口设计 抽象父类设计 动态数组之DynamicArray 补充数组缩容 全局的关系图 声明 数组基础回顾 1.数组是一种常见的数据结构,用 ...

  5. Java并发编程之闭锁与栅栏

    一.前言 闭锁与栅栏是在多线程编程中的概念,因为在多线程中,我们不能控制线程的执行状态,所以给线程加锁,让其按照我们的想法有秩序的执行. 闭锁 CountDownLatch,实例化时需要传入一个int ...

  6. Burp Suite抓包使用步骤

    Burp Suite抓包工具的操作步骤见安装步骤那篇博客 检查是否存在漏洞,就看拦截之后修改过的数据是否写进了数据库 举例一.上传文件 1.打开Burp.调整Proxy-Intercept-Inter ...

  7. 鸿蒙真的是套壳吗?HarmonyOS应用开发初体验,Java原生和JavaScript的mvvm开发

    初探寻鸿蒙os的应用开发 本期视频已发布到bilibili 注意是应用开发,没错码农(应用开发)一般关注这个就行了 IDE 点击应用开发以后,点击链接下载IDE,DevEco Studio是基于IDE ...

  8. docker 部署 zabbix

    docker部署zabbix   我相信大家都已经会再物理机上跑zabbix并且监控了,那么有没有想过在docker中跑zabbix?下面咱们来看看如何在docker中搭建zabbix并且监控 部署环 ...

  9. Spring Cloud Alibaba生态探索:Dubbo、Nacos及Sentinel的完美结合

    @ 目录 背景 一.项目框架 1.1 采用IDEA和Maven多模块进行项目搭建 1.2 模块管理及版本管理 二.微服务公共接口 2.1 定义一个公共接口Api 2.2 pom.xml 2.3 Goo ...

  10. 为什么我选择MySQL Workbench・一

    一.官方 官方提供的工具必然有其优势. MySQL Workbench有两个版本,社区版和商业版.社区版是免费的. 二.第一个选择 使用MySQL之前用的是SQL Server而微软的东西一般都使用微 ...