Python基础之day07-面向对象基础2
Python基础之day07-面向对象基础2
文章目录
- Python基础之day07-面向对象基础2
- 一、继承
- 二、子类调用父类的方法
- 三、多层继承与多继承
- 四、多态
- 五、封装
代码仓库地址: https://gitee.com/andox_yj/python
一、继承
- 继承介绍:一个类可以继承另外一个类的属性和方法,有单继承和多继承单继承指一个类只能有一个父类,多继承指一个类可以有多个父类。
- 示例:一个类A里面的属性和方法可以通过继承的方式,传递到类B里。那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。
- 注意:私有属性与私有方法无法被继承。
- 代码示例
# 用法: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.父类类名.方法名(self) # 不用继承也可以调用
2.super(子类类名,self).方法名() # 需要继承才可以调用,
3.super().方法名()
# 上一种方法的简写,最常用 - 代码示例
# 定义一个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) # 王老师
三、多层继承与多继承
- 区别:
- 多层继承:既一个子类继承了父类,父类又继承了祖父类
- 多继承:一个子类继承多个父类
- 查看多继承调用顺序:
print(类名.__mro__)
- 代码示例
# ################# 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'>)
四、多态
- 多态介绍:多态依赖于继承,一个类的对象的引用,可以指向这个类的对象,也可以指向它的子类对象,在运行后才能确定具体是哪个对象,通过这种形式让程序有多种形态,称为多态。(python属于多弱类型语言,所以才有多态。)
- 强弱类型介绍:
- 强类型:不允许一个变量等于不同的类型,不允许一个指定类的对象名后再赋值其他类或值
- 弱类型:允许一个变量等于不同的类型,允许一个指定类的对象名后再赋值其他类或值
- 代码示例
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)
五、封装
- 介绍:把数据和行为(或功能)相结合,形成一个整体,隐藏实现细节,对外提供使用。类就是封装
- 代码示例:
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相关推荐
- Python第十七课(面向对象基础)
Python第17课(面向对象基础) >>>思维导图>>>中二青年 面向对象编程思想OOP 什么是面向对象 面向对象是一种编程思想,是前辈们总结出的经验,指导 ...
- 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程
跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍 本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...
- Python基础入门_5面向对象基础
Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...
- 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)
目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...
- 01 PHP面向对象基础
转载于:黑马程序员武汉中心 面向对象基础 文章目录 面向对象基础 一.面向对象编程思想 **二.面向对象基础** **1.面向对象关键字说明** **2.面向对象简单技术实现** **3.类成员** ...
- 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~
Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...
- Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...
- Python面向对象基础示例_创建对象
Python面向对象基础示例_创建对象 python是面向对象的语言,你可以很轻松的创建一个类和对象.本书代码源自<<Python 3 Object-Oriented Programmin ...
- python和对象复习_python 面向对象基础和高级复习
面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...
- 从0基础学习Python(13)[面向对象思想]
从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 目前软件开发技术中两种主流思想:面向过程.面向对象 面向过程思想出现较早,C语言 面向对象思想 ...
最新文章
- 深入理解数据库行锁与表锁
- OpenCV学习笔记——判断两张图的相似度
- 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区
- Linux: Shell编程基础
- smc数显压力表设定方法_自动增压泵不停止工作原因及解决方法
- java 小数精度问题
- HashPasswordForStoringInConfigFile 已过时
- 14.TCP/IP 详解卷1 --- DNS:域名系统
- 关于调试模块BC26-移远NB模块-过程所遇问题-记录
- 计算机telnet命令大全,telnet 命令使用方法详解,telnet命令怎么用
- 广通优云徐育毅:做中国的ServiceNow
- 自适应音频功率放大器
- 合泰单片机市场占有率_科创板亏损第一股年亏26亿背后:核心技术依赖母公司与台积电相差3代...
- 拼音搜索 -- 自动解析拼音汉子组合(包含多音字,拼音缩写)
- skylake服务器处理器M系列,瞄三大产品线!谈Intel Skylake架构CPU
- 基于TSUNG对MQTT进行压力测试-测试结果
- Unity Mesh(五) Mesh 立方体Cube贴图以及六个面分别贴不同的图片
- Sentry 清理数据
- 利用虚拟化实现PC平滑迁移
- 5G NR SUL CA DC对比