浅谈Python中的私有变量


Posted in Python onFebruary 28, 2018

私有变量表示方法

在变量前加上两个下划线的是私有变量。

class Teacher():
  def __init__(self,name,level):
    self.__name=name
    self.__level=level

  #获取老师的等级
  def get_level(self):
    return self.__level

  #获取名字
  def get_in_name(self):
    return self.__name

动态方法无法读取私有变量

即使是动态方法也无法读取私有变量,强行读取会报错。

#定义动态方法
def get_name(self):
  return self.__name

#动态方法赋值
Teacher.get_name=get_name


t=Teacher("GG",5)

print("level is: ",t.get_level())    #可行
print("name is",t.get_name())      #报错,显示没有该属性

动态方法无法修改私有变量

动态方法也无法修改私有变量,强行修改不会报错,但是没有效果。

t.set_name("NN")        #实际没有效果但是不报错
print(t.get_in_name())     #类内部获取名字,输出GG

强行读取和修改私有变量

那么强行要读取和改变私有变量怎么办呢?

有一个不推荐但是可行的办法:

私有属性在对象内部被名字是”类名_属性名”。

在这个例子里,是这样的:

print("name is",t._Teacher__name)      #输出GG
t._Teacher__name="AA"            #被改变了
print("name is",t._Teacher__name)      #输出AA
Python 相关文章推荐
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
用Python3创建httpServer的简单方法
Jun 04 Python
详解Python if-elif-else知识点
Jun 11 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
Django 数据库同步操作技巧详解
Jul 19 Python
python opencv 简单阈值算法的实现
Aug 04 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Django更新models数据库结构步骤
Apr 01 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
Django使用channels + websocket打造在线聊天室
May 20 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
python中logging包的使用总结
Feb 28 #Python
深入理解Python爬虫代理池服务
Feb 28 #Python
python实现装饰器、描述符
Feb 28 #Python
python安装教程
Feb 28 #Python
深入理解Python 关于supper 的 用法和原理
Feb 28 #Python
TensorFlow实现RNN循环神经网络
Feb 28 #Python
python使用TensorFlow进行图像处理的方法
Feb 28 #Python
You might like
一周学会PHP(视频)Http下载
2006/12/12 PHP
php数组分页实现方法
2016/04/30 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
python encode和decode的妙用
2009/09/02 Python
python格式化字符串实例总结
2014/09/28 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
Python中for循环控制语句用法实例
2015/06/02 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
设计师大码女装:11 Honoré
2020/05/03 全球购物
献爱心活动总结
2014/05/07 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
Python中的嵌套循环详情
2022/03/23 Python
Python使用MapReduce进行简单的销售统计
2022/04/22 Python