封装
封装 就是隐藏内部实现细节,
将复杂的,丑陋的,隐私的细节隐藏到内部,对外提供简单的访问接口
为什么要封装
1.保证关键数据的安全性
2.对外部隐藏实现细节,隔离复杂度
什么时候应该封装
1.当有一些数据不希望外界可以直接修改时
2.当有一些函数不希望给外界使用时
如何使用封装
语法:
class Person:
def __init__(self,id_number,name,age)
self.__id_number = id_number
# 比如这里是比较重要的身份证号码,不能随便调用
# 给属性或者方法前面加上 __ def show_id(self):
print(self.__id_number)
def __say_hi(self):
print(f"hi, 我是{self.name}")
p = Person('35676549809711', 'bitten', 29)
p.id_number = '3756789' # 这里其实是给对象加了个属性 id_number(对象属性的增删改查)
print(p.id_number)
# 222
p.show_id()
# 111111111111111111 # 并没有受到影响
# p.__id_number # 报错,pycharm没有提示也找不到,AttributeError: 'Person' object has no attribute '__id_number'
# p.__say_hi # 报错,AttributeError: 'Person' object has no attribute '__say_hi'双下划线,外界就访问不到了
self.name = name
self.age = age
p = Person("1111111111111","jack",29)
p.id_number = "222"
被封装的内容的特点:
1.外界不能直接访问
2.内部依然可以使用
权限
利用好封装的特性就可以控制属性的权限(接着往下看)