Python基础之day07-面向对象基础2

文章目录

  • Python基础之day07-面向对象基础2
  • 一、继承
  • 二、子类调用父类的方法
  • 三、多层继承与多继承
  • 四、多态
  • 五、封装

代码仓库地址: https://gitee.com/andox_yj/python

一、继承

  1. 继承介绍:一个类可以继承另外一个类的属性和方法,有单继承和多继承单继承指一个类只能有一个父类,多继承指一个类可以有多个父类。
  2. 示例:一个类A里面的属性和方法可以通过继承的方式,传递到类B里。那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。
  3. 注意:私有属性与私有方法无法被继承。
  4. 代码示例
    # 用法:class 子类名(父类名):# 父类
    class Father:money = 10000def __init__(self):self.house = 10def make_money(self):print("父类的赚钱的方法")# ################# 1.继承基础:单继承 ####################
    # 子类1
    class Son1(Father):passson1 = Son1()
    # 子类拥有父类的方法与类属性和对象属性
    print(son1.money)  # 10000
    print(son1.house)  # 10
    son1.make_money()  # 父类的赚钱的方法# ################# 2.单继承:子类添加方法 ####################
    # 子类2
    class Son2(Father):money = 500def __init__(self):self.house = 5def make_money(self):print("子类2重写父类的赚钱的方法")def play(self):print("子类2自己的玩方法")son2 = Son2()
    # 子类拥有父类的方法与类属性和对象属性
    print(son2.money)  # 500
    print(son2.house)  # 5
    # 如果子类父类的方法或属性同名,子类就是使用自己的方法或属性。这种叫做子类的"重写"
    son2.make_money()  # 子类2重写父类的赚钱的方法
    son2.play()  # 子类2自己的玩方法
    

二、子类调用父类的方法

  1. 子类方法里调用父类的方法:
    1.父类类名.方法名(self) # 不用继承也可以调用
    2.super(子类类名,self).方法名() # 需要继承才可以调用,
    3.super().方法名() # 上一种方法的简写,最常用
  2. 代码示例
    # 定义一个Master类
    class Master:def __init__(self):self.name = '王老师'def read(self):print("师傅的方法")# 定义Student类,继承了 Master
    class Student(Master):def read(self):print("徒弟的方法")def m_read(self):# Master.read(self) #调用父类的方法1# super(Student, self).read()  #调用父类的方法2super().read()  # 调用父类的方法3# 实例化Student对象
    stu = Student()
    # 调用子类的方法
    stu.read()  # 徒弟的方法
    # 在子类方法里面调用父类的方法
    stu.m_read()  # 师傅的方法
    # 调用父类的方法
    print(stu.name)  # 王老师
    

三、多层继承与多继承

  1. 区别:

    • 多层继承:既一个子类继承了父类,父类又继承了祖父类
    • 多继承:一个子类继承多个父类
  2. 查看多继承调用顺序:print(类名.__mro__)
  3. 代码示例
    # ################# 1.多层继承 ####################
    # 祖父类
    class GrandFather:def __init__(self):self.name = "GrandFather"def watch(self):print("祖父类看电视方法")# 父类
    class Father(GrandFather):pass# 子类
    class Son(Father):def grand_father(self):super(Son, self).watch()son = Son()
    # 获取祖父类的属性
    print(son.name)  # GrandFather
    # 调用祖父类的方法
    son.watch()  # 祖父类看电视方法
    # 在子类中调用祖父类方法
    son.grand_father()# ################# 2.多继承 ####################
    class Mother:def __init__(self):self.name = "妈妈"def teach(self):print("教英语")def have_houser(self):print("妈妈有房子")class Father:def __init__(self):self.name = "爸爸"def teach(self):print("教语文")def have_money(self):print("爸爸有钱")class Son(Mother, Father):def __init__(self):self.name = "儿子"def have_toy(self):print("儿子有文具")son = Son()
    # 调用自己的属性与方法
    print(son.name)  # 儿子
    son.have_toy()  # 儿子有文具
    # 调用所有父类的方法
    son.have_money()  # 爸爸有钱
    son.have_houser()  # 妈妈有房子
    # 查看多继承调用顺序
    print(Son.__mro__)  # (<class '__main__.Son'>, <class '__main__.Mother'>, <class '__main__.Father'>, <class 'object'>)
    

四、多态

  1. 多态介绍:多态依赖于继承,一个类的对象的引用,可以指向这个类的对象,也可以指向它的子类对象,在运行后才能确定具体是哪个对象,通过这种形式让程序有多种形态,称为多态。(python属于多弱类型语言,所以才有多态。)
  2. 强弱类型介绍:
    • 强类型:不允许一个变量等于不同的类型,不允许一个指定类的对象名后再赋值其他类或值
    • 弱类型:允许一个变量等于不同的类型,允许一个指定类的对象名后再赋值其他类或值
  3. 代码示例
    class F1(object):def show(self):print('F1.show')class S1(F1):def show(self):print('S1.show')class S2(F1):def show(self):print('S2.show')def Func(obj):# python是弱类型,即无论传递过来的是什么,obj变量都能够指向它,这也就没有所谓的多态了(弱化了这个概念)# 简单来说,既obj对象,可以是S1类的对象,也可以是S2类的对象,而强类型语言,obj必须指定是哪个类的对象。obj.show()s1_obj = S1()
    Func(s1_obj)s2_obj = S2()
    Func(s2_obj)
    

五、封装

  1. 介绍:把数据和行为(或功能)相结合,形成一个整体,隐藏实现细节,对外提供使用。类就是封装
  2. 代码示例:
    class Student:def __init__(self, name):self.name = namedef say(self):print('我的名字是%s' % self.name)def sum(self, x, y):result = x + yreturn resulta = Student('a')
    b = Student('b')
    c = Student('c')
    d = Student('d')# 对象之间的属性和方法互不相关
    a.say()
    b.say()
    # 不用关心内部实现 只需要调用方法得到结果
    print(a.sum(1, 2))
    

Python基础之day07-面向对象基础2相关推荐

  1. Python第十七课(面向对象基础)

    Python第17课(面向对象基础)    >>>思维导图>>>中二青年 面向对象编程思想OOP 什么是面向对象 面向对象是一种编程思想,是前辈们总结出的经验,指导 ...

  2. 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程

    跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍         本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...

  3. Python基础入门_5面向对象基础

    Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...

  4. 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)

    目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...

  5. 01 PHP面向对象基础

    转载于:黑马程序员武汉中心 面向对象基础 文章目录 面向对象基础 一.面向对象编程思想 **二.面向对象基础** **1.面向对象关键字说明** **2.面向对象简单技术实现** **3.类成员** ...

  6. 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

    Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...

  7. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

  8. Python面向对象基础示例_创建对象

    Python面向对象基础示例_创建对象 python是面向对象的语言,你可以很轻松的创建一个类和对象.本书代码源自<<Python 3 Object-Oriented Programmin ...

  9. python和对象复习_python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  10. 从0基础学习Python(13)[面向对象思想]

    从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 ​ 目前软件开发技术中两种主流思想:面向过程.面向对象 ​ 面向过程思想出现较早,C语言 ​ 面向对象思想 ...

最新文章

  1. 深入理解数据库行锁与表锁
  2. OpenCV学习笔记——判断两张图的相似度
  3. 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区
  4. Linux: Shell编程基础
  5. smc数显压力表设定方法_自动增压泵不停止工作原因及解决方法
  6. java 小数精度问题
  7. HashPasswordForStoringInConfigFile 已过时
  8. 14.TCP/IP 详解卷1 --- DNS:域名系统
  9. 关于调试模块BC26-移远NB模块-过程所遇问题-记录
  10. 计算机telnet命令大全,telnet 命令使用方法详解,telnet命令怎么用
  11. 广通优云徐育毅:做中国的ServiceNow
  12. 自适应音频功率放大器
  13. 合泰单片机市场占有率_科创板亏损第一股年亏26亿背后:核心技术依赖母公司与台积电相差3代...
  14. 拼音搜索 -- 自动解析拼音汉子组合(包含多音字,拼音缩写)
  15. skylake服务器处理器M系列,瞄三大产品线!谈Intel Skylake架构CPU
  16. 基于TSUNG对MQTT进行压力测试-测试结果
  17. Unity Mesh(五) Mesh 立方体Cube贴图以及六个面分别贴不同的图片
  18. Sentry 清理数据
  19. 利用虚拟化实现PC平滑迁移
  20. 5G NR SUL CA DC对比

热门文章

  1. NYOJ备用2344 盖伦的告白(线段树||双端队列)
  2. uniapp动态气泡上升效果
  3. java堆是什么_java中的堆是什么意思?
  4. PPT翻译功能怎么用?这个方法一学就会
  5. 管理者如何面对不确定性,环境变化的这几个重要特征你知道么
  6. 项目商业计划书撰写重点关注点
  7. Python - Python 模拟鼠标和键盘进行基本操作
  8. sony相机分类与选型
  9. 网易云音乐歌曲评论爬虫(附python源码)
  10. java-net-php-python-JAVA汽车门店销售管理系统计算机毕业设计程序