封装

封装就指的是把属性装进一个容器中,有隐藏的意思,但这种隐藏对外不对内。

封装数据属性的目的是为了将数据属性封装起来,类外部的使用就无法直接操作该数据属性了,需要类内部开一个接口给使用者 而且类的设计者乐园在接口上附加任意的逻辑

来严格控制使用者对数据的操作

而封装函数属性的目的是隔离复杂度

如何封装呢?

只要在属性前加上__开头 ,该属性就会被隐藏

隐藏具备的特点:

1.只是一种语法意义上的变形,即__开头的属性会在检测语法时发生变形成_类名__属性名

2.这种隐藏是对外不对内的,因为类内部检测语法时所用的代码都会统一发生变形

3.这种变形只会在检测语法时发生一次 在类定义之后新增的__开头的属性不会发生变形

4.如果父类不想让子类覆盖自己的属性 可以在自己的属性前加上__开头

class A:
    def __f1(self):
        print('A.f1')

    def test(self):
        self.__f1()
    
 
class B(A):#子类
    def__f1(self):
        print('B.f1')

obj=B()
obj.test()
#验证父类属性前加上__不会被子类覆盖

class Foo:
    __x=111
    def __init__(self,m):
        self.__m=m

    def f1(self):
        print(self.__m)
        print(self.__x)#内部接口

#obj = Foo(12)
==>print(obj.f1())
封装接口
原文地址:https://www.cnblogs.com/xiamenghan/p/9846004.html