每天一点python——day94

#每天一点Python——94
#面向对象的三大特征——封装
'''
封装:隐藏内部细节,对外提供操作方式。【提高程序的安全性】
继承:在函数调用时,使用’形参名称=值‘的方式进行传参,传递参数的顺序可以与定义时参数顺序不同【提高程序的复用性】
多态:在函数定义时,直接对形式参数进行赋值。在调用时,如果该参数不传值,将使用默认值,如果该参数传值,则使用传递的值【提高程序的拓展性和可维护性】
三大特征与语言本身没有关系,不管你是c或者java都一样,这只是一种编程思想,而我们现在就是在学Python,所以接触Python方面比较多。
'''
#封装:
'''
类似于银行用的ATM机,你根本不清楚内部结构,但是你只要会如何使用就可以了。至于内部细节如何使用,就不用管了。
其目的就是保证数据的安全性。
'''
#封装的实现
'''
封装:将数据(属性)和行为(方法)包装在类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
这样,就不用关心方法内部具体的实现了,从而隔离了复杂度。
'''
#封装的实现:
class Car():def __init__(self,pingpai):self.pingpai=pingpaidef qidong(self):print('汽车已经启动')#以上就是一个创建好的类了,
#我们现在创建一个对象
car=Car('汽车')
car.qidong()
print(car.pingpai)
'''
输出结果如下:
汽车已经启动
汽车
这就是封装好一个类后的使用。
'''

封装示意图:

 

点击图中所示位置,就会看到我们创建的类就已经像一个包一样,封装好了。提高了方便

#封装好一个类后,肯定设计到一些权限的使用
#就像一个应用软件,有面向用户和面向操作人员的,要使用就得开通权限,这样就产生了权限控制
'''
权限控制:是通过对属性、方法添加单下划线、双下划线以及首尾双下划线来实现的。
各个下划线的区别:
①单下划线开头:
以单下划线开头的属性或方法表示(protected)受保护的成员,这类成员被视为仅供内部使用,允许类本身和子类进行访问,但实际上它可以被外部代码访问。
②双下划线开头:
表示(private)私有的成员,这类成员只允许定义该属性或方法的类本身进行访问。
③首尾双下划线:
一般表示特殊的方法
'''
#例:权限控制
class Student:#首尾双下划线def __init__(self,name,age,xingbie):#方法的形参,也就是局部变量self._name=name#受保护的单下划线开头,只能本类和子类访问self.__age=age#私有的双下划线开头,智能类本身去访问self.xingbie=xingbie#普通的实例属性,类的内部,外部以及子类都可以访问【访问权限最大】def _fun(self):#定义一个方法,加了一个下划线说明它是受保护的print('子类以及它本身可以使用')def __fun2(self):#定义一个私有的方法print('只有定义的类可以访问')def pu(self):#定义一个普通的实例方法self._fun()#类本身访问受保护的方法self.__fun2()#类本身去访问私有的方法print(self._name)#受保护的实例属性print(self.__age)#私有的实例属性
#以上就是我们创建出来的类的结构。
#接下来创建一个对象
stu=Student(name='阿四',age=20,xingbie='男')#因为我们初始化方法里面有三个参数,所以我们创建的对象也需要三个参数
#现在我们在类的外部,在类的外部访问受保护的实例属性stu._name
print(stu._name)
#输出:阿四
#然后我们再访问一下类的私有属性stu.__age
'''
print(stu.__age)
输出结果:
'Student' object has no attribute '__age'
会报错。会显示没有这个属性。
这里就疑惑了,我明明定义了这个呀
这是因为私有属性出了类的定义范围,就不能使用了
'''
#访问受保护的示例方法
stu._fun()
#输出:子类以及它本身可以使用
'''
访问私有方法
stu.__fun2()
输出:'Student' object has no attribute '__fun2'
报错,也是没有这个方法,说明也是超过访问了,不允许访问
'''#私有的实例属性和方法是真的不能访问吗?
'''
可以访问,只是他的访问多了一个形式,要求使用对象名字
如下:
'''
print(stu._Student__age)stu._Student__fun2()
#为什么可以访问?
#dir()函数可以展示对象中所有的属性和方法。
print(dir(stu))
#输出如下
'''
['_Student__age', '_Student__fun2', '__class__', '__delattr__', 
'__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__','__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_fun', '_name', 'pu', 'xingbie']以上就是这个对象所有的属性和方法了在里面可以看到我们私有的age在里面定义为_Student__age所以我们访问它时,也需要使用这种形式。fun2方法在里面是_Student__fun2所以我们调用时也需要对象名打点调用_Student__fun2才可以。以上就是权限的控制。
'''

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

push和扩展运算符...引发的问题

文章目录 一、问题二、原因三、解决3.1、使用拓展运算符...合并(推荐使用)3.2、使用concat合并3.3、循环push 四、最后 一、问题 const items [] const newItems new Array(1000000) items.push(...newItems)上面代码会出现如下错误: Unc…

从零开始搭建企业管理系统(七):RBAC 之用户管理

RBAC 之用户管理 创建表(Entity)用户表角色表权限表用户角色表关系注解ManyToMany 角色权限表 接口开发UserControllerUserServiceUserServiceImplUserRepository 问题解决update 更新问题懒加载问题JSON 循环依赖问题 根据上一小结对表的设计&#xff0…

【面试】测试/测开(NIG2)

145. linux打印前row行日志 参考&#xff1a;linux日志打印 前10行日志 head -n 10 xx.log后10行日志 tail -n 10 xx.log tail -10f xx.log使用sed命令 sed -n 9,10p xx.log #打印第9、10行使用awk命令 awk NR10 xx.log #打印第10行 awk NR>7 && NR<10 xx.log …

H3C ER G2系列路由器信息泄露漏洞

H3C ER G2系列路由器信息泄露漏洞 免责声明漏洞描述漏洞影响漏洞危害漏洞页面漏洞复现1. 构造poc2. 发生数据包&#xff0c;获取密码3. 登录系统 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平。 任何人不得利用该文章…

mac电脑html文件 局域网访问

windows html文件 局域网访问 参考 https://blog.csdn.net/qq_38935512/article/details/103271291mac电脑html文件 局域网访问 开发工具vscode 安装vscode插件 Live Server 完成后打开项目的html 右键使用Live Server打开页面 效果如下&#xff0c;使用本地ip替换http://12…

利用高级 CSPM 应对现代攻击

混合云和多云环境的快速增长造成了跨架构的复杂性&#xff0c;使得人们很难清楚、完整地了解技术堆栈中的各种平台。最近云攻击和破坏的激增引起了人们对团队应如何有效地保护和运行云中的应用程序的关注。 因为错误配置是云环境中安全威胁的首位&#xff0c;并且是基于云的攻…

学生护眼灯最好是哪一款?考研受欢迎的护眼台灯推荐

当前我国近视防控面临严峻局面&#xff0c;数据显示&#xff0c;我国近视发病率比较高&#xff0c;2012年在我国5岁以上总人口中&#xff0c;近视的人数在4.5亿人左右:到2050年&#xff0c;全世界每十个人中就有一个人患有近视&#xff0c;而这其中1/3将会是中国人。世界卫生组…

【Qt QML入门】Button

Button表示一个推按钮控件&#xff0c;用户可以按下或单击它。 import QtQuick import QtQuick.Window import QtQuick.ControlsWindow {id: winwidth: 800height: 600visible: truetitle: qsTr("Hello World")Button {id: btnwidth: 200height: 100anchors.centerIn…

MIT_线性代数笔记:第 17 讲 正交矩阵和施密特正交化

目录 正交向量 Orthonormal vectors标准正交矩阵 Orthonormal matrix标准正交列向量的优势 Orthonormal columns are good施密特正交化 Gram-Schmidt 本讲我们完成对“正交”的介绍。Gram-Schmidt 过程可以将原空间的一组基转变为标准正交基。 正交向量 Orthonormal vectors 满…

VHDL实验:基于有限状态机实现秒表

题目要求&#xff1a; 利用有限状态机实现实现一个具有启动、停止、清零功能的秒表&#xff0c;显示格式&#xff1a;分&#xff1a;秒&#xff1a;十分秒。启动、停止、清零由一个按键控制&#xff0c;按键按下时&#xff0c;功能按启动、停止、清零顺序循环。 思路分析&…

代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树

本文图片来源&#xff1a;代码随想录 层序遍历&#xff08;图论中的广度优先遍历&#xff09; 这一部分有10道题&#xff0c;全部可以套用相同的层序遍历方法&#xff0c;但是需要在每一层进行处理或者修改。 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 层…

【深度学习】强化学习(五)深度强化学习

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数7、深度强化学习1. 背景与动机2. 关键要素3. 成功案例4. 挑战和未来展望5. 核心概念和方法总结 一、强化学习问题 强化学…

关于react native项目中使用react-native-wechat-lib@3.0.4

关于react native项目中使用react-native-wechat-lib3.0.4 插件官网安装依赖包&#xff08;Android和iOS下载插件完成后记得更新依赖&#xff0c;&#xff09;Android中配置1.在项目文件夹下面创建文件夹wxapi&#xff08;如上图&#xff09;2.在文件MainApplication.java中如下…

基于Java SSM框架实现高校人事管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现高校人事管理系统演示 JSP技术介绍 JSP技术本身是一种脚本语言&#xff0c;但它的功能是十分强大的&#xff0c;因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时&#xff0c;它可以使显示逻辑和内容分开&#xff0c;这就极大的方便了用户的需…

树莓派,opencv,Picamera2利用舵机云台追踪人脸

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目标…

【漏洞复现】华脉智联指挥调度平台/script_edit/fileread.php文件读取漏洞

Nx01 产品简介 深圳市华脉智联科技有限公司&#xff0c;融合通信系统将公网集群系统、专网宽带集群系统、不同制式、不同频段的短波/超短波对讲、模拟/数字集群系统、办公电话系统、广播系统、集群单兵视频、视频监控系统、视频会议系统等融为一体&#xff0c;集成了专业的有线…

Axure->Axure安装,Axure菜单栏和工具栏功能介绍,页面及概要区

目录 一.项目的全周期 二.产品经理的介绍 三.Axure安装 四.Axure的基本使用 1.Axure菜单栏和工具栏功能介绍&#xff0c;页面及概要区 一.项目的全周期 二.产品经理的介绍 同时做五个项目&#xff0c;每个项目100w&#xff0c;一个项目成本需要50-60w&#xff0c;那么五个…

做数据分析为何要学统计学(10)——什么是回归分析

​回归分析&#xff08;regression analysis)是量化两种或两种以上因素/变量间相互依赖关系的统计分析方法。回归分析根据因素的数量&#xff0c;分为一元回归和多元回归分析&#xff1b;按因素之间依赖关系的复杂程度&#xff0c;可分为线性回归分析和非线性回归分析。我们通过…

机器学习算法应用场景与评价指标

一、应用场景 机器学习的算法选择大部分依赖于具体的问题类型和数据特征。下面是一些典型的场景以及对应的常用算法&#xff1a; 1.二元分类问题 当你的目标变量只有两个类别时&#xff0c;如垃圾邮件过滤&#xff08;垃圾邮件/非垃圾邮件&#xff09;、患者疾病诊断&#x…

UE4 UMG 颜色字体和PS对应关系

与PS中对应的是Hex sRGB色号 但是PS中采用的16进制色号为6位 UE4中的为8位 UMG制作时默认dpi为96像素/英寸&#xff0c;psd默认dpi是72像素/英寸。 在GUI设计时将dpi设为96&#xff0c;或者将72dpi下字体的字号乘以0.75&#xff0c;都能还原效果图中的效果。