在程序设计中,分装是将类中的某些部分(某些属性或者方法)隐藏起来,对象不能直接使用隐藏起来的属性或者方法,具有保护功能。
总结:隐藏对象的属性和方法实现细节,仅对外提供公共访问方式。 封装格式:__属性或者方法名称。(我们也叫私有属性或者方法)
封装的目的:保护隐私
注:私有属性和私有方法只能在类的内部使用
私有属性
格式:__属性名=值
在类的外部不能使用(对象不能调用私有属性)
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age # self.__age就是一个私有属性。对象就不能使用了。
def __set__(self,age):
self.__age=age ##正常修改
def __str__(self):
mag = '姓名:{},年龄:{}'.format(self.__name, self.__age)
return mag
person = Person('zs', 23)
print(person)
person = Person('zs', 23)
person.__age = -20 # 私有不可改变
print(person)
私有方法
私有方法:在方法前添加__例如__seng_message()
私有方法的作用:就是在开发的过程中保护核心代码。
在类的外部不能使用(对象不能调用私有方法)
class A:
def __test1(self):
print('test1')
def test2(self):
print('test2')
self.__test1() # 内部可以调用自己的私有方法
应用场景
a = A()
a.__test1()#私有方法不能调用
a.test2()
class Callphone:
def __tell(self):
print('正在打电话....')
def tell_one(self,money):
if money>0:
self.__tell()
else:
print('10086提醒你欠费了哦。。')
c1=Callphone()
c1.tell_one(-12)
私有化封装后的限制
类中--------------------可以访问
类名/对象外 ---- ----不可以访问
子类/子类对象-------不可以访问
注意事项:
1.在python中实现的封装操作,不是通过权限限制而是通过改名实现的,名字变了找不到而已
2.可以使用__dick__可以查看属性(包括私有属性)的值
再类的内部使用私有属性,python内部会自动进行转换成_类名__属性名。
在类的外部不能给对象添加私有属性因为不能转换成_类名_属性名的类型。