每天一点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.rhkb.cn/news/217560.html

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

相关文章

02-Nacos和Eureka的区别与联系

Nacos和Eureka的区别 联系 Nacos和Eureka整体结构类似: 都支持服务注册, 服务拉取, 采用心跳方式对服务提供者做健康监测的功能 区别 Nacos支持服务端主动检测服务提供者状态: 临时实例采用心跳模式,非临时实例采用主动检测模式但对服务器压力比较大(不推荐) 心跳模式: 服务…

喜讯!云起无垠入选“2023年中国AIGC创新企业榜”

近日,第一新声正式发布了《2023年中国AIGC创新企业榜》,涵盖综合榜、细分行业榜和案例榜。云起无垠凭借AIGC领域的创新实践和应用,上榜应用层「AIGC应用场景创新企业榜」。 2023年是AIGC创新发展的元年,大模型技术的兴起与应用在各…

实战:Docker Compose 下 Nginx、Java、Mysql 和 Redis 服务协同部署(包含解决浏览器访问Linux部署服务器本地资源问题)

1. 背景 在该实战中,我们将探讨如何使用Docker Compose协同部署Nginx、Java、Mysql和Redis服务,实现一个视频上传与展示的应用。具体需求如下: Java应用负责上传视频和图片资源到Nginx目录下,作为资源服务器。Nginx服务作为静态…

bugkuctf web随记wp

常规思路: 1,源码2,抓包3,御剑dirsearch扫后台检查是否有git文件未删除4,参数 本地管理员:1,cu看源码,sci看源码有一串东西2,base64解码后是test123猜测是密码3&#x…

企业打造高产出的新媒体运营团队的步骤有哪些?

企业在搭建新媒体矩阵的过程中,第一步是确定平台,第二步就是组建一个运营团队。 但组建一个高质量的运营团队并非容易的事情,很多企业可能都不知道: 不同规模的企业需要什么样的运营团队?运营团队中的不同岗位需要做哪…

【机器学习】利用线性回归预测披萨价格

目录 前言 一、绘制散点图 二、数据准备 三、一元线性回归模型训练 四、一元线性回归模型评估 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首…

Linux查询指定时间点段日志Linux查询指定文件

Linux服务器高效查询日志查询文件 Ⅰ、常用几种日志查询语法Ⅱ、常用几种查询语法 Ⅰ、常用几种日志查询语法 #查询某日志前xx行日志 head -n 行数 日志文件名 #查询某日志后xx行日志 tail -n 行数 日志文件名 #查询固定时间点日志(前提是这个时间点确实有日志输出…

基于javaweb实现的实践教学基地管理系统

一、系统架构 前端:html | js | css | bootstrap 后端:spring | springmvc | mybatis-plus 环境:jdk1.8 | mysql8 | tomcat | maven 二、代码及数据库 三、功能介绍 01. web-首页1 02. web-首页2 03. web-首页3 04. web-首页4 05. 管…

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

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

集简云 x 零售企业丨快速集成有赞商城和微盛企微管家,实现私域运营自动化

客户介绍 某公司是一家知名的饮料厂商,自1998年成立以来,一直致力于研发和生产各种热门饮品,如果汁、碳酸饮料、矿泉水等。因其独特的口感和健康的品质深受消费者的喜爱。企业拥有多个知名品牌,享有极高的品牌知名度和市场份额。该…

jsp文件引用的css修改后刷新不生效问题

问题 在对 JavaWeb 项目修改的过程中,发现修改了 jsp 文件引入的 css 文件的代码后页面的样式没有更新的问题。 原因 导致这个问题的原因可能是因为浏览器缓存的问题。 解决方法 下面介绍两种解决方法,供大家参考: 1、给 link 标签的 c…

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 (1)当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version(2)下载Nexus新…

椋鸟C语言笔记#26:数据在内存中的存储(大小端字节序)、浮点数的存储(IEEE754)

萌新的学习笔记,写错了恳请斧正。 目录 大小端字节序 什么是大小端 写一个判断大小端的程序 浮点数在内存中的存储(IEEE 754规则) 引入 存储规则解释 读取规则解释 1.阶码不全为0或全为1(规格化数) 2.阶码全为…

SQLMAP的使用(rails 为例)

1.启动一个项目&#xff0c;例如rails学习的项目&#xff0c;修改config/database.yml&#xff0c; 假设来一个接口&#xfeff; class YourModel::YourController < ApplicationController def test_sqlisql "select * from your_table_name where id " par…

亿欧网首届“元创·灵镜”科技艺术节精彩纷呈,实在智能AI Agent智能体展现硬核科技图景

12月4日-10日&#xff0c;持续一周的首届“元创灵镜”科技艺术节在海南陵水香水湾拉开帷幕&#xff0c;虚实交互创造出的“海岛之镜”开幕式呈现出既真实又虚幻的未来感&#xff0c;融入前沿科技元素的艺术装置作品在“虚实之镜&自然生长”科技艺术展诠释着浪漫想象&#x…

VS2022 将项目打包,导出为exe运行

我有一个在 VS2022 上开发的程序&#xff0c;基于.net 6框架, 想打包成 .exe程序&#xff0c;以在另一个没有安装VS的机器上运行&#xff0c;另一个机器是Win7系统&#xff0c;上面安装了.net 6框架。 虽然网上很多教程&#xff0c;需要安装Project Installer&#xff0c;配置A…

用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

1、模式标准 模式名称&#xff1a;状态模式 模式分类&#xff1a;行为型 模式意图&#xff1a;允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构图&#xff1a; 适用于&#xff1a; 1、一个对象的行为决定于它的状态&#xff0c;并且它必须…

CommonJs模块化实现原理ES Module模块化原理

CommonJs模块化实现原理 首先看一个案例 初始化项目 npm init npm i webpack -D目录结构如下&#xff1a; webpack.config.js const path require("path"); module.exports {mode: "development",entry: "./src/index.js",output: {path: p…

2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现&#xff1a; 在导航软件中&#xff0c;行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练&#xff0c; CUDA_VISIBLE_DEVICES0 python src/train_web.py…