当前位置: 首页 > 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~~

http://www.lryc.cn/news/26131.html

相关文章:

  • 软考中级软件设计师备考建议
  • 【机器学习】决策树(理论)
  • VSCode下载与安装使用教程【超详细讲解】
  • 2023年3月北京/上海/广州/深圳DAMA数据管理认证CDGA/CDGP
  • 进程和线程理论知识
  • 华为OD机试用Python实现 -【广播服务器】
  • Solon2 的应用生命周期
  • 学习笔记-架构的演进之服务容错策略设计模式-3月day02
  • 【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)
  • mes系统核心业务流程及应用场景介绍
  • 应用统计部分常用公式总结
  • 阿赵的MaxScript学习笔记分享八《文件操作》
  • 将项目封装进docker进行迁移或使用
  • matlab - 特殊矩阵、矩阵求值、稀疏矩阵
  • Flume使用入门
  • 【Servlet篇2】Servlet的工作过程,Servlet的api——HttpServletRequest
  • 【JAVASE】注解
  • 【408之计算机组成原理】计算机系统概述
  • 1.Spring Cloud (Hoxton.SR10) 学习笔记—基础知识
  • 嵌入式开发工具箱【持续更新中】【VMware、Ubuntutftp、nfs、SecureCRT、XShell、Source Insight 4.0】
  • 深究Java Hibernate框架下的Deserialization
  • 微服务一 实用篇 - Docker安装
  • JavaSE22-集合2-map
  • 【项目精选】病历管理系统设计与实现(源码+视频)
  • 如何用Python把篮球和鸡联系起来
  • 【RocketMQ】消息的刷盘机制
  • AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed
  • Java知识复习(八)Spring基础
  • WuThreat身份安全云-TVD每日漏洞情报-2023-02-27
  • 上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》