面向对象中之封装简述
一,封装:
将复杂的,隐私的细节藏到内部,对外提供简单的使用接口。
目的:
1.为了保证关键数据的安全性
2.对外部影藏实现细节,隔离复杂度
使用场景:
当一些数据不希望被外界直接修改的时,
当一些方法不想被外界使用时
语法:
class person: def __init__(self,id_number,name,age) self.__id_number = id_number #封装 self.name = name self.age = age
特点:
1,外界不能直接访问或使用
2,内部时依然可以使用的
封装实现原理:
是在加载类的时候,把双杠(_ _)属性或方法名 替换成了 _ 类名 _ _
二,权限
在python中只有两种权限
1.公开的(默认的就是公开的)
2.私有的,只能当前类自己使用
当封装后,可以同过定义方法类对私有属性的修改和访问
三,property装饰器
通过该装饰器装饰后,只要使用者来修改或是访问属性,不需要考虑哪些是普通属性,哪些是私有属性,需要使用哪些不同的方式调用。
它还可以来实现计算属性
如下:
class A: def __init__(self,name,key): self.__name = name self.__key = key @property def key(self): return self.__key @key.setter def key(self,new_key): if new_key <= 100: self.__key = new_key else: print("key 必须小于等于100") @key.deleter def key(self): print("不允许删除该属性") del self.__key a = A("jack",123) print(a.key) a.key = 321 print(a.key)