当前位置: 首页 > news >正文

Python进阶-----面向对象3.0(面对对象三大特征之---封装)

目录

前言:       

什么是封装

Python私有化封装

习题


前言:       

        上一期是讲解Python中类的私有属性和方法,其实很好理解,我给一个类中的部分属性进行加密拒绝访问(上一期链接Python进阶-----面向对象2.0(特有属性和方法与私有属性和方法)_Python欧尼酱的博客-CSDN博客),其实这是一种封装的体现。其实日常生活中有很多事物都是进行过封装处理,比如说一个箱子,里面封装了一些物品;一些个人信息资料,也是进行了加密处理,这些都是封装的体现。当然代码也是可以去封装的,而且封装还是Python面对对象的三大特征之一,下面就一期来看看吧。

什么是封装

        封装是一种编程思想,不仅仅是Python中有的,通过封装我们可以去把一些代码块功能或者数据进行打包处理,这样我们就不需要关系里面具体的代码细节,要用的时候就拿出来用就行了,一个函数也是一种封装体现,我们想用就用,并不会影响代码的整体性。这就是封装的好处

 封装的意义封装的最大好处是提高程序的安全性,提高程序的运作效率

举个例子:当我们去做一个项目的时候,我们会把这个项目的各个功能分开处理,而不是全部放到一起,分开处理的过程其实就是一个封装处理过程,这样使得程序具有高内聚,低耦合的特点,而不是出现牵一发而动全身,使得程序运行更加稳定。

 在Python面向对象中狭义的封装也就是对一个类对一些属性和方法进行封装,或者累中的成员再次进行封装处理,下面先看个例子。

 没有封装处理的代码:

if __name__=='__main__':user_name=input('账号:')password=input('密码:')if user_name=='root' and password=='123456':print('登陆成功!')

进行封装处理的代码:

class User(object):def __init__(self,user_name,password):self.user_name=user_nameself.password=passworddef login(self):if self.user_name=='root' and self.password=='123456':print('登陆成功!')
if __name__=='__main__':u=User('root','123456')User.login(u)

这样对比就很明显了。

Python私有化封装

在Python中定义一些属性的时候,我们要对一些重要的信息进行加密封装处理,也就是进行私有化,外部的实例对象是无法去访问的,而在类的内部是可以去调用的,所以我们可以在类中定义相关方法作为一个验证,当验证通过时才可以去访问相关信息,实例如下: 

class User(object):def __init__(self,user_name,password,test='abcde'):self.user_name=user_nameself.__password=password #密码加密私有化self.__test=test         #验证信息加密def login(self):if self.user_name=='root' and self.__password=='123456':print('登陆成功!')def getpassword(self,test): #建立一个验证信息从而访问密码if test==self.__test:return self.__passwordreturn False
if __name__=='__main__':u=User('root','123456')print(u.user_name)# print(u.__password) 是访问不到了,因为password被私有化了User.login(u)print(u.getpassword('abcde'))
#输出结果:
# root
# 登陆成功!
# 123456

习题


   利用类完成一个简易的计算器
   1、属性为两位参与计算的数字
   2、实现加减乘除的四种计算方法

    1 , 定义一个人类
    2 , 人物属性 : 性别 , 身高 , 体重, 健康度 ...
    3 , 方法1 : 跑步 : 体重减少0.5 , 健康度增加 0.01
    4 , 方法2 : 走路 : 体重减少0.01
    5 , 方法3 : 吃饭 : 体重增加0.8 , 健康度增加 0.05
    6 , 方法4 : 睡懒觉 : 体重增加2, 健康度增加 2

 你们可以去做做看

答案:

#1.计算器
class calc:def __init__(self):print('the result is')def __add(self,num1,num2):return num1+num2def __sub(self,num1,num2):return num1-num2def __mul(self,num1,num2):return num1*num2def __div(self, num1, num2):return num1/num2def computer(self,num1,num2,count):if count=='add':return self.__add(num1,num2)elif count=='sub':return self.__sub(num1,num2)elif count=='mul':return self.__mul(num1,num2)elif count=='div':return self.__div(num1,num2)
# if __name__=='__main__':
#     a=int(input('num1:'))
#     b=int(input('num2:'))
#     count=input('count:')
#     com=calc()
#     end=com.computer(a,b,count)
#     print(end)#2.human bing
class humanway:def __init__(self,gander,height,weight,health):self.gandef=ganderself.height=heightself.weight=weightself.health=healthdef running(self):self.weight -=0.5self.health +=0.01def walking(self):self.weight -= 0.01def eating(self):self.weight += 0.8self.health += 0.05def sleeping(self):self.weight += 2self.health -= 2
# people=humanway('male',1.75,60,1.0)
# print(people.weight,people.height,people.health)
# people.eating()
# print(people.weight,people.height,people.health)

好了,以上就是Python封装的基本内容了,thanks~~

相关文章:

Python进阶-----面向对象3.0(面对对象三大特征之---封装)

目录 前言: 什么是封装 Python私有化封装 习题 前言: 上一期是讲解Python中类的私有属性和方法,其实很好理解,我给一个类中的部分属性进行加密拒绝访问(上一期链接Python进阶-----面向对象2.0&#…...

软考中级软件设计师备考建议

前言 首先我说一下个人对这个考试的一个感受看法,我觉得软件设计师考试并不难,主要是不要被内心的恐惧吓倒,考试中心态真的很重要! 一、中级软件设计师科目包括: (1)计算机与软件工程知识&am…...

【机器学习】决策树(理论)

决策树(理论) 目录一、何为决策树1、决策树的组成2、决策树的构建二、熵1、熵的作用2、熵的定义3、熵的计算4、条件熵的引入5、条件熵的计算三、划分选择1、信息增益( ID3 算法选用的评估标准)2、信息增益率( C4.5 算法…...

VSCode下载与安装使用教程【超详细讲解】

目录 一、VSCode介绍 二、官方下载地址 三、VSCode安装 1、点击我同意此协议,点击下一步; 2、点击浏览,选择安装路径,点击下一步; 3、添加到开始菜单,点击下一步; 4、根据需要勾选&#…...

2023年3月北京/上海/广州/深圳DAMA数据管理认证CDGA/CDGP

弘博创新是DAMA中国授权的数据治理人才培养基地,贴合市场需求定制教学体系,采用行业资深名师授课,理论与实践案例相结合,快速全面提升个人/企业数据治理专业知识与实践经验,通过考试还能获得数据专业领域证书。 DAMA认…...

进程和线程理论知识

1.进程和线程之间的联系。 进程是程序依次执行的过程,线程是比进程小的执行单位。 一个进程在其执行过程中可以创建多个线程。 多个线程共享进程的堆和方法区内存资源。 进程是OS进行资源分配的基本单位。 线程是OS进行调度的基本单位。 进程和线程是1&#xff1…...

华为OD机试用Python实现 -【广播服务器】

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲广播服务器题目输入输出示例一输入输出示例二输入输出Python代码代码编写思路最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题...

Solon2 的应用生命周期

Solon 框架的应用生命周期包括:一个初始化函数时机点 六个事件时机点 两个插件生命时机点 两个容器生命时机点(v2.2.0 版本的状态): 提醒: 启动过程完成后,项目才能正常运行(启动过程中&…...

学习笔记-架构的演进之服务容错策略设计模式-3月day02

文章目录前言断路器模式舱壁隔离模式重试模式总结附前言 容错设计模式,指的是“要实现某种容错策略,我们该如何去做”。微服务中常见的设计模式包括断路器模式、舱壁隔离模式和超时重试模式等,另外还有流量控制模式等。 断路器模式 断路器…...

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)

前言 HTML 是一切Web开发的基础,本文专门为小白整理,针对前端零基础的朋友们,手把手教你学习HTML,让你轻松迈入WEB开发的行列。 首先,感谢 橙子_ 在HTML学习以及本文编写过程中对我的帮助。 文章目录前言一.HTML简介1.…...

mes系统核心业务流程及应用场景介绍

现在许多企业已经开始使用MES系统控制和管理工厂的生产过程,实时监控、诊断和控制生产过程,完成单元集成和系统优化。本文将为大家具体介绍一下MES系统的业务流程。 MES系统业务流程 1、计划调度MES系统承接了ERP订单,开始干预生产。该模块…...

应用统计部分常用公式总结

常见分布函数 常用公式 分位数:P{X>xα}α,P{X≤xα}1−αP\{X>x_\alpha\}\alpha, P\{X\le x_\alpha\}1-\alphaP{X>xα​}α,P{X≤xα​}1−αE(Xi)E(X)E(X‾)μE(X_i)E(X)E(\overline X)\muE(Xi​)E(X)E(X)μE(X2)E2(X)D(X)μ2σ2E(X^2)E^2(X)D(X)\mu^2…...

阿赵的MaxScript学习笔记分享八《文件操作》

大家好,我是阿赵。继续分享MaxScript学习笔记第八篇 。这一篇主要讲文件操作,包括文件的I/O和导入导出。 1、获得3DsMax指定的一些目录路径 如果在电脑上安装了3DsMax软件,那么在文档里面会有一个3dsMax的文件夹,里面有一些3dsMa…...

将项目封装进docker进行迁移或使用

首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻。 这里列一下docker的基本命令: docker info # 查看docker信息 docker -v # 查看docker版本 docker images # 查看docker所有的镜…...

matlab - 特殊矩阵、矩阵求值、稀疏矩阵

学习视频1.特殊矩阵1.1 通用特殊矩阵format % 零矩阵(全0) 幺矩阵(全1) 单位矩阵 % zeros ones eye rand(生成0~1的随机元素) randn(生成均值为1,方差为0的符合正太分布的随机阵)zeros(3) % 3x3的全0方阵 zeros(3, 4) % 3x4的全0矩阵 exA ones(3, 5) % 3x5的…...

Flume使用入门

目录 一. Flume简单介绍 1. Agent 2. Source 3. Sink 4. Channel 5. Event 二. 环境安装 1. 创建日志目录 2. 修改日志配置文件 3.修改运行堆内存 4. 确定日志打印的位置 5. 修改flume使用内存 内存调大 三. 校验flume 1. 安装netcat工具和net-tools工具 2. 判…...

【Servlet篇2】Servlet的工作过程,Servlet的api——HttpServletRequest

一、Servlet的工作过程 二、Tomcat的初始化 步骤1:寻找到当前目录下面所有需要加载的Servlet(也就是类) 步骤2:根据类加载的结果创建实例(通过反射),并且放入集合当中 步骤3:实例创建好之后,调用Servlet的init()方…...

【JAVASE】注解

文章目录1.概述2.JDK内置注解2.1override注解2.2 Deprecated注解3.元注解4.注解中定义属性4.1 属性value4.2 属性是一个数组5. 反射注解6.注解在开发中的作用1.概述 注解,也叫注释,是一种引用数据类型。编译后也同样生成class字节码文件。 语法 [修饰…...

【408之计算机组成原理】计算机系统概述

目录前言一、计算机的发展历程1. 计算机发展的四代变化2. 计算机元件的更新换代3. 计算机软件的发展二、计算机系统层次结构1. 计算机系统的组成2. 冯诺依曼体系结构3. 计算机的功能部件1. 输入设备2. 输出设备3. 存储器4. 运算器5. 控制器三、 分析计算机各个部件在执行代码中…...

1.Spring Cloud (Hoxton.SR10) 学习笔记—基础知识

本文目录如下:一、Spring Cloud基础知识什么是微服务架构?服务拆分 有哪些注意事项?什么是分布式集群?分布式的 CAP 原则?组件 - Spring Cloud 哪几个组件比较重要?组件 - 为什么要使用这些组件?组件 - Na…...

嵌入式开发工具箱【持续更新中】【VMware、Ubuntutftp、nfs、SecureCRT、XShell、Source Insight 4.0】

一、概述 本文主要介绍嵌入式开发过程中需要用到的工具及简单的使用方法。避免在搭建嵌入式开发环境时,需要四处寻找文档,收藏此文章,一文搞定。 大多数嵌入式开发环境是使用Linux作为目标开发系统,所以开发主机一般都是Linux系统…...

深究Java Hibernate框架下的Deserialization

写在前面 Hibernate是一个开源免费的、基于 ORM 技术的 Java 持久化框架。通俗地说,Hibernate 是一个用来连接和操作数据库的 Java 框架,它最大的优点是使用了 ORM 技术。 Hibernate 支持几乎所有主流的关系型数据库,只要在配置文件中设置好…...

微服务一 实用篇 - Docker安装

《微服务一 实用篇 - Docker安装》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - Docker安装》《微服务一 实用篇 - Docker安装》0.安装Docker1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker…...

JavaSE22-集合2-map

文章目录一、集合概念二、map集合1、Map集合的特点2、HashMap2.1 HashMap特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 使用entrySet遍历2.4.2 使用keySet遍历3、HashMap的key去重原理一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集…...

【项目精选】病历管理系统设计与实现(源码+视频)

点击下载源码 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量,促进医学科研、教学;减轻各类事务性工作的劳动强度,使他们腾出更多的精力和时间来服务于病人。本系统结构如下: 电子病例系统: 病人登…...

如何用Python把篮球和鸡联系起来

文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来,都首先得有个球,或者说要有一个球面,用参数方程可以表示为 xrcos⁡ϕcos⁡θyrcos⁡ϕsin⁡θzrsin⁡ϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…...

【RocketMQ】消息的刷盘机制

刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后&#xff0c;调用了submitFlushRequest方法执行刷盘策略&#xff1a; public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …...

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed

&#x1f4a1;Note&#xff1a;本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf&#xff08;issue F&#xff09;整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出&#xff0c;有补充或者疑问也可以发在评论区&#xff0c;互相学习&#x1f64…...

Java知识复习(八)Spring基础

1、什么是Spring框架&#xff1f; Spring &#xff1a;是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework&#xff0c;就是指如上图所示的各项功能模块Spr…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-27

漏洞名称:OTFCC 缓冲区错误漏洞 漏洞级别:中危 漏洞编号:CVE-2022-35060,CNVD-2023-11996,CNNVD-202209-1527 相关涉及:OTFCC OTFCC 漏洞状态:EXP 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-23648 漏洞名称:MuYucms 存在任意代码执行漏洞 漏洞级别:高危…...

wordpress4.2.19 漏洞/新网站seo

推荐&#xff1a;将 NSDT场景编辑器加入你的3D开发工具链。接口 大部分界面位于节点编辑器中&#xff0c;而其余部分 该界面存在于其他区域&#xff0c;例如 3D 视口。 动画节点有自己的节点编辑器&#xff0c;您可以通过以下方式选择 单击“涂料表”图标 在工具栏中。一个新的…...

安徽省工程建设信息网站/万网官网入口

安装包:jdk-7u79-windows-x64-20151024打开安装目录双击运行程序&#xff0c;出现安装程序点击下一步&#xff0c;更改安装路径(目的是为了保证安装目录的规范&#xff0c;尽量不要出现汉字和空格)更改为E盘(安装程序尽量不要安装在C盘&#xff0c;因为D盘不能使用&#xff0c;…...

广东建设局网站/百度推广按点击收费

5.9.6. Usage Patterns 5.9.6.使用方式 模式可以以多种方式组织数据。一个安全的模式使用方式可以防止用户改变其他用户的查询行为。如果数据库中未使用安全的模式方式&#xff0c;那么在查询之前&#xff0c;需要进行保护性的设置。一般&#xff0c;需要在开始会话之前首先设…...

做网站的目的/精准客源app

我正在尝试创建一个函数来捕获以规范形式(XXX)XXX-XXX或XXX-XXX-XXXX写入的电话号码&#xff0c;并附加条件。这是我的方法def parse_phone2(s):phone_number re.compile(r^\s*\(? # Begining of string, Ignore leading spaces([0-9]{3}) # Area code\)?\s*|-? # Match 0 …...

济南专门做公司网站的公司/微博营销软件

NSQ是一个基于Go语言的分布式实时消息平台&#xff0c;它基于MIT开源协议发布&#xff0c;代码托管在GitHub。NSQ可用于大规模系统中的实时消息服务&#xff0c;并且每天能够处理数亿级别的消息&#xff0c;其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架…...

wordpress音乐插件百度/注册网站的免费网址

说明&#xff1a;题号前带*的为作业题。 计算机操作系统(第四版) 汤小丹 配套资源&#xff1a;https://blog.csdn.net/COCO56/article/details/101201389 文章目录3. 虚拟存储器有哪些特征&#xff1f;其中最本质的特征是什么&#xff1f;9. 何谓固定分配局部置换和可变分配全局…...