类成员保护和访问限制有什么用

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)
<ipython-input-xxx> in <module>4 5 p = person('小明')
----> 6 p.__nameAttributeError: 'person' object has no attribute '__name'

那么如何访问和修改受保护和访问限制的类成员呢

关于如何访问和修改受保护和访问限制的类成员,以及上面提到的python类的成员可以通过“成员保护和访问限制的机制”为什么是“非常大程度地禁止”类实例对象对其进行直接访问和直接的修改,而不是“完全禁止”,大家可以参考下面的内容:

python类成员保护和访问限制,及该设计的编程思想https://www.x1y1z1.com/python/pyprivate.html

用电脑回收站的数据保护机制:理解python类成员保护和访问限制,及编程思想相关推荐

  1. python的缩进规则是什么意思_Python编程思想(2):Python主要特性、命名规则与代码缩进...

    目录 那么什么是动态语言呢? 那么什么是弱类型语言和强类型语言呢? Python命名规则 缩进原则 李宁老师的<Python编程思想>上线了,囊括了Python的核心技术,以及Python ...

  2. python类成员_Python的类成员和对象成员

    Python中有个类成员的概念,绝对是困扰新手的问题.看看下面的代码就知道两者的区别了. #!/usr/bin/python # -*- coding: utf-8 -*- import time f ...

  3. 理解python - 类

    多继承 Python同样有限的支持多继承形式.多继承的类定义形如下例: class DerivedClassName(Base1, Base2, Base3): ​ . . . <stateme ...

  4. 带你轻松理解python类的一些基础用法(❁´◡`❁)

  5. python类成员变量_Python 类变量和成员变量

    Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...

  6. python类的成员函数_注入一个python类成员函数

    你在这里要做的是Child2.foo用self不是a的方法调用未绑定的方法Child2. 这是非法的,Python 2将检测到并提出一个TypeError解释错误的地方:TypeError: unbo ...

  7. python 类成员变量是否存在_python中类变量与成员变量的使用注意点总结

    前言 最近在用python写一个项目,发现一个很恶心的bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解.后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现 ...

  8. python中idx+=1_在Python中为apos;循环访问索引 Dovov编程网

    使用for循环,在这种情况下,如何访问循环索引,从1到5? 使用enumerate : for index, item in enumerate(items): print(index, item) ...

  9. Python类的自定义属性访问及动态属性设置

    本文主要介绍python类的一些自定义属性访问的方法,以及类的动态属性设置即python的内置函数setattr(). 自定义属性访问 ​ 什么是属性?下面的例子a和b是属性吗?不是,他们是全局变量, ...

最新文章

  1. 互联网巨头终极战场:得开发者得天下
  2. python入门(三)-- 基本运算符
  3. 快速找到Word 2007长文档的某一页
  4. 【C++ Primer】自己动手编写函数 atoi(char *str)
  5. getDeclaredField和getField的区别
  6. 汽车穿越沙漠的算法问题(反推法)
  7. Matlab Command Window 进度提示
  8. 在VMWare上安装Win3.2
  9. python图片读取优化_python读取raw binary图片并提取统计信息的实例
  10. 前端学习(3239):react生命周期setstate流程
  11. c# 无损高质量压缩图片代码
  12. 用vue开发顶端粘滞效果的页面
  13. mysql并行复制功能
  14. spring-第十一篇之SpEL表达式
  15. android手机刷机后驱动更新失败,刷机驱动安装失败的可以进来试试!
  16. 阅读《视音频编解码技术零基础学习方法-雷霄骅》摘要
  17. python:类基础
  18. SM干货篇:你应该具备的提问技巧!
  19. python切片练习(League of Legends)
  20. ZooKeeper作为注册中心

热门文章

  1. java打增量包_idea 打增量jar包方法
  2. vs 创建win32 dll(带有DllMain函数)项目时遇到的一系列问题
  3. tomcat 在linux上的重启和关闭命令
  4. Bootstrap2【上手教程】
  5. 知识是什么计算机如何表示知识,计算机基础知识教程介绍
  6. 3D绘图ax.plot_surface()
  7. 简单工厂模式(附带UML图解和代码实现)
  8. IKE v2为什么协商速度快?
  9. self-attention代码
  10. VNPY 软件架构分析