用电脑回收站的数据保护机制:理解python类成员保护和访问限制
类成员保护和访问限制有什么用
python类的成员可以通过“成员保护和访问限制的机制”非常大程度地禁止类实例对象对其进行直接访问和直接的修改,只能通过类实例方法来获取、访问或修改。
这里为什么说是“非常大程度地禁止”,而不是“完全禁止”?先卖个关子!
python为什么要设计类成员保护和访问限制的功能呢
首先,我们通过一个通俗的实例来了解一下什么是类成员保护和访问限制的机制。
- 我们双击要访问电脑的回收站里头的文件,是不是会弹出个对话框,让我们把文件恢复到原来的位置,该过程我们可以理解为python类的成员保护和访问限制;
- 然后,我们删除电脑回收站里头的垃圾文件的时候,是不是也会弹出一个对话框,问我们是否真的要永久性地删除回收站里头的文件,这同样可以理解为python类的成员保护和访问限制;
- 在弹出的对话框,通常会有两个按钮,分别是确定与取消。当我们点击确定的时候,回收站的文件就可以被恢复到原来的位置,或被永久删除,这个过程,我们可以理解为python的类通过类的实例方法来访问类成员和修改类成员。
由此,我们大致可以将python类的成员保护和访问限制理解为是python对数据的一种保护机制。还有其他的运用场景,比如:人身份证上的名字是不能随便修改的,这样通过python类的成员保护和访问限制就可以很大程度上避免编程开发过程中一不小心将数据修改的。
成员保护和访问限制的语法
在成员的名字前加上两个英文的下划线__,如:
class Person():
def __init__(self, name):
self.__name = name #在成员前面加两个下划线,该成员称为受保护的成员,下面类的实例访问该成员被限制
p = Person('小明')
p.__name
——————————————————————————————
代码输出:
AttributeError Traceback (most recent call last)
in
4
5 p = person('小明')
----> 6 p.__name
AttributeError: 'person' object has no attribute '__name'
那么如何访问和修改受保护和访问限制的类成员呢
关于如何访问和修改受保护和访问限制的类成员,以及上面提到的python类的成员可以通过“成员保护和访问限制的机制”为什么是“非常大程度地禁止”类实例对象对其进行直接访问和直接的修改,而不是“完全禁止”,大家可以参考下面的内容: