面向对象的三大特征:封装、继承、多态

封装

概念:将一个对象的数据隐藏在对象内部,不让在外界直接访问,而是通过对象提供的方法来访问这些隐藏起来的数据,这样就可以在访问方法中添加访问条件限制,目的是对数据的有效组织和数据安全性的保护
通俗理解:就是一个东西是自己的,不让外人直接拿到,而是通过向自己借东西的行为来判断是否可以借给他人

属性私有化封装

约定私有化:加一个下划线在规范上约定不能直接访问
语法私有化:加两个下划线在语法上不能通过属性名称直接访问

属性私有化是python层面的操作,底层解释器在解释时将两个下划线开头的属性进行了自动转换变成了_类名__属性名的形式,原来的属性名已经不存在了,所以不能直接访问,但是可以通过转换后的语法来访问,但是不推荐
私有化属性数据有两个用途:
第一可以用在当前类型中的业务流程中,如对象的一个临时计数属性等
第二可以使用类型提供的访问私有化属性方法来获取数据参与类外部的运算

属性访问方法

属性私有化之后,只能在当前类内部访问,为了数据的可用性,一般会提供私有访问属性的操作方法
固定语法格式:
访问格式

修改格式

总结:封装,将对象的数据隐藏在内部,不让外界直接访问,而是通过提供的属性访问set/get方法完成数据的访问和赋值,在set/get方法中添加访问条件限制,完成私有数据的保护

继承

继承主要体现了基于类的代码复用性,通过继承关系关联两个类
有了继承关系,在子类中可以使用父类中的公共属性和方法,复用了父类的代码
基本语法:

class Father:父类
class Son(Father):子类

在子类中可以在父类的基础上扩展方法
扩展属性:
调用父类的初始化方法{子类中编写初始化方法,父类的方法不会直接调用,必须手动调用}

def__init__(self,name,age,gender,level)# 初始化父类方法super().__init__(name,age,gender)

继承关系中,子类也可以通过__bases__属性查看当前类型继承的父类信息
方法的覆盖:
在继承中,子类中可以重新编写父类中相同名称的属性或者方法,方法的重新编写称为方法的覆盖(子类的方法覆盖了父类同名的方法)或者方法重写(子类重写了父类继承过来的方法)

多继承

多继承模式下继承顺序,使用了广度优先的查询原则
python提供了mro()方法用于确认继承关系中属性和方法的查询操作顺序
在子类中使用suoer() 指向的是mro当中的顺序

class A:def func0(self):print("我是父类A")
class B:def func1(self):print("我是父类B")
class C(A,B):def func2(self):self.func0()self.func1()

多态

一个对象的多种状态,多态只是一种表现形式,没有固定格式,体现的是程序运行过程中的状态改变和行为的多样性

    可以通过继承关系来完成角色的关系互换可以通过继承中的方法重写,完成行为方法的切换可以通过代码结构的设计,完成行为的多样性

拓展

__str__与__repr__方法
这两个方法都是打印对象的方法
其两者的区别在于:
str方法是直接打印对象时调用的该方法
repr方法是在其他对象中(如列表、元组)中打印时调用
例:

class User:def __init__(self, name, age, nickname):self.name = nameself.age = ageself.nickname = nickname# __str__() # 当我们打印对象时自动执行def __str__(self):"""在打印对象时自动调用str放法"""return f"< User user({self.name},{self.age},{self.nickname})>"# repr   当对象在其他对象中 打印时def __repr__(self):"""当对象在其他对象中(列表,元组) 打印时调用的是repr方法"""return f"< User user({self.name},{self.age},{self.nickname})>"# 实例化对象
xw = User('小王',18,'小王吧')
# 这里调用的是__str__方法
print(xw)  # <__main__.User object at 0x0000000002662888>
# 这里调用的是__repr__方法
lis = (xw,)
print(lis)

Python基础(封装、继承、多态)相关推荐

  1. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  2. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  3. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  4. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  5. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

  6. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  7. 小白理解——封装继承多态

                                      一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...

  8. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  9. 白话文带你了解 封装 继承 多态

    这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...

  10. 第九课(面向对象):封装 继承 多态

    一.面向对象概念:根据模板(创建一个类)并实例化 这个思路就叫面向对象 二.使用面向对象编程好处: 可以重复使用(实例化类) 容易修改(只用修改类的模板) 三.面向对象的特点: 封装 继承 多态 类名 ...

最新文章

  1. 确定安全威胁与漏洞-A
  2. 郑州银行评选神策数据为“最佳年度合作伙伴”
  3. linux服务器视窗,linux窗口管理器介绍
  4. Oracle数据库表空间占用过大的解决办法
  5. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】
  6. 手把手教你写一份优质的前端技术简历
  7. [Elasticsearch] es 6.6 编译报错 java.net.ConnectException: Operation timed out
  8. 一文详解 Dubbo 注册发现流程
  9. 安装VxWorks 6.6有感
  10. 把图片url 伪静态 php,thinkphp5系列之URL伪静态(生成优雅的URL)
  11. linux下各种后缀名文件的压缩和解压缩
  12. Unity PID 控制算法可视化学习
  13. ocr初始化失败怎么办_win10重置初始化失败怎么办_win10重置初始化失败的处理办法...
  14. kvm虚拟机压缩qcow2镜像空间
  15. 如何在以太坊网络上发布自己的代币
  16. 随着裁员浪潮滚滚而来,科技工作者的泡沫是否即将破灭?
  17. 【PyTorch】PyTorch神经网络实战入门
  18. 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和
  19. php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程
  20. 最新JAVA调用新浪微博API之发微博(转)

热门文章

  1. 小学计算机兴趣班简介,小学兴趣班介绍幻灯片
  2. 医学影像系统源码,三维后处理和重建 PACS源码
  3. android开发架构总结一——常用的第三方库
  4. springboot整合poi-tl
  5. 加速乐原理探讨和学习总结
  6. 《Naturalization Module in Neural Networks for Screen Content Image Quality Assessment》解读
  7. [解锁新姿势] 封装通用返回值
  8. CH579M构建环境
  9. The system is: Windows - 10.0.14393 - AMD64
  10. 小明和小强都是张老师的学生,张老…