目录
前言:
上一期是讲解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~~