用电脑回收站的数据保护机制:理解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)
<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类成员保护和访问限制,及编程思想相关推荐
- python的缩进规则是什么意思_Python编程思想(2):Python主要特性、命名规则与代码缩进...
目录 那么什么是动态语言呢? 那么什么是弱类型语言和强类型语言呢? Python命名规则 缩进原则 李宁老师的<Python编程思想>上线了,囊括了Python的核心技术,以及Python ...
- python类成员_Python的类成员和对象成员
Python中有个类成员的概念,绝对是困扰新手的问题.看看下面的代码就知道两者的区别了. #!/usr/bin/python # -*- coding: utf-8 -*- import time f ...
- 理解python - 类
多继承 Python同样有限的支持多继承形式.多继承的类定义形如下例: class DerivedClassName(Base1, Base2, Base3): . . . <stateme ...
- 带你轻松理解python类的一些基础用法(❁´◡`❁)
- python类成员变量_Python 类变量和成员变量
Python 类变量和成员变量 类与对象的方法 我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分.事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提 ...
- python类的成员函数_注入一个python类成员函数
你在这里要做的是Child2.foo用self不是a的方法调用未绑定的方法Child2. 这是非法的,Python 2将检测到并提出一个TypeError解释错误的地方:TypeError: unbo ...
- python 类成员变量是否存在_python中类变量与成员变量的使用注意点总结
前言 最近在用python写一个项目,发现一个很恶心的bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解.后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现 ...
- python中idx+=1_在Python中为apos;循环访问索引 Dovov编程网
使用for循环,在这种情况下,如何访问循环索引,从1到5? 使用enumerate : for index, item in enumerate(items): print(index, item) ...
- Python类的自定义属性访问及动态属性设置
本文主要介绍python类的一些自定义属性访问的方法,以及类的动态属性设置即python的内置函数setattr(). 自定义属性访问 什么是属性?下面的例子a和b是属性吗?不是,他们是全局变量, ...
最新文章
- 求整型数组所有子串的和中的最大值
- 中文ocr识别通过crnn
- js --- for in 和 for of
- 神经网络的收敛标准有最优值吗?
- Windows Server 2003 IIS 使用 Excel.Application
- nyoj239 月老的难题 二分图 匈牙利算法
- dojo + jersey 上传图片到数据库
- [SAP ABAP开发技术总结]以二进制、字符模式下载文件
- ubuntu下mysql的master-slave,双master 及A-B-C级联主从配置说明
- CORS(跨域资源共享) 的配置
- 科研党 篇一:完成一篇SCI论文必备的20+工具
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例52
- 使用git push推送时出现错误error: failed to push some refs to ‘https://gitee.com/yang-yimu/vue_shop.git‘
- CyanogenMod 官方移植指南
- 如何选择计算机软考科目,计算机软考科目众多 我们该如何选择考试科目?
- linux 日志查看及操作
- 2020年数据科学与大数据技术专业填报指南(附院校及专业介绍)/ 高考填志愿...
- win7删除文件夹提示找不到项目,文件删不掉怎么办?
- 使用python matplotlib实现动图绘制
- 2021年全球与中国气候试验箱行业市场规模及发展前景分析