#什么叫封装
封:密封
装:包装
只能用规定的方法访问,包装数据可以提高安全性
如何去获取这些隐藏数据呢?
可以用get/set的方法进行访问
封装格式为 __名称
#封装
class People:
def __init__(self,name,age,height):
self.naem=name
self.age=age
self.__height=height
#用内部开辟get方法访问隐藏属性__height
def getHeight(self):
return self.__height
#修改隐藏数据
def setHight(self,height):
self.__height=height
#实例化对象
qun=People("小鱼",18,180)
# print(qun.height)这里直接取隐藏属性会报错
print(qun.getHeight())#调用方法取
#修改隐藏数据
qun.setHight(190)
#property()函数用法
格式:
property(fget=None,fset=None,fdel=None)
fget:获取私有属性的方法
fset :修改私有属性的方法
fdel:删除私有属性的方法
有什么用
可以规范代码的使用
#封装
class People:
def __init__(self,name,age,height):
self.naem=name
self.age=age
self.__height=height
#用内部开辟get方法访问隐藏属性__height
def getHeight(self):
return self.__height
#修改隐藏数据
def setHight(self,height):
self.__height=height
#删除私有属性
def delHeight(self):
del self.__height
#实际上在这里就调用了方法
height=property(fget=getHeight,fset=setHight,fdel=delHeight)
#实例化对象
qun=People("小鱼",18,180)
# print(qun.height)这里直接取隐藏属性会报错
#直接取私有属性
print(qun.height)
#修改
qun.setHight=160
#删
del qun.height
#property装饰器
直接@property 这个是内置函数,方便了代码的操作
格式:
取:@property
def 函数名
改:@函数名.setter
删:@函数名.deleter
注意:函数名需要相同
#封装
class People:
def __init__(self,name,age,height):
self.naem=name
self.age=age
self.__height=height
#用内部开辟get方法访问隐藏属性__height
@property
def height(self):
return self.__height
#修改隐藏数据
@height.setter
def height(self,height):
self.__height=height
#删除私有属性
@height.deleter
def height(self):
del self.__height
#实例化对象
qun=People("小鱼",18,180)
# print(qun.height)这里直接取隐藏属性会报错
#直接取私有属性
print(qun.height)
#修改
qun.setHight=160
#删
del qun.height