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_name
        self.password=password
    def 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_name
        self.__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.__password
        return 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+num2
    def __sub(self,num1,num2):
        return num1-num2
    def __mul(self,num1,num2):
        return num1*num2
    def __div(self, num1, num2):
        return num1/num2
    def 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=gander
        self.height=height
        self.weight=weight
        self.health=health
    def running(self):
        self.weight -=0.5
        self.health +=0.01
    def walking(self):
        self.weight -= 0.01
    def eating(self):
        self.weight += 0.8
        self.health += 0.05
    def sleeping(self):
        self.weight += 2
        self.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~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fitz&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值