目录:
封装
- 什么是封装:将类的一下属性和方法对外隐藏,对内可见
- 为什么要封装:为属性和方法的操作添加权限,具体权限都是通过自定义逻辑来处理
- 封装的手段:在类属性方法,对象属性方法,静态方法名字前添加 __
只要是通过 __名字(双下划綫) 这种命名规范,就是对外隐藏 - 本质:__名字(双下划綫) 封装隐藏变量的本质是 将名字修饰成 _类名__名字
对外解决封装的方式
- 如果真的不想让外界访问,就不对外提供访问数据的方法
- 如果想让外界访问,可以对外提供访问数据的方法,方法具有逻辑,使用可以添加操作权限
class Test:
def __init__(self, name):
# __name只是对外隐藏,对内可见
self.__name = name
def get_name(self):
return self.__name
def set_name(self, name):
if 'sb' not in name: # 对数据的修改可能会产生数据的安全性问题,可以添加限制条件
self.__name = name
# 重点:封装的对外访问语法的优化
class User:
def __init__(self, name):
self.__name = name
@property # 将方法伪装成属性
def name(self):
return self.__name
@name.setter # 能为有伪装get方法的(方法)属性,再伪装set方法
def name(self, value):
self.__name = value
@name.deleter
def name(self):
del self.__name
# 总结:
# 1.对象没了,对象的属性也就没了,所以不需要属性 @名字.deleter
# 2.对外提供get方法是基础,@property,如果没有,外界不可读不可写
# 3.如果有@property,则可以 @名字.setter,有set,为可读可写,无set为只读
@property # 伪装的属性方法,不需要一定有 __开头 的名字与之对应
def pwd(self)