浅谈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 相关文章推荐
Python与shell的3种交互方式介绍
Apr 11 Python
python僵尸进程产生的原因
Jul 21 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
Python sys模块常用方法解析
Feb 20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 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
用函数读出数据表内容放入二维数组
2006/10/09 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
Vue实现简单计算器
2021/01/20 Vue.js
numpy.linspace 生成等差数组的方法
2018/07/02 Python
基于python实现学生管理系统
2018/10/17 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
简单了解python PEP的一些知识
2019/07/13 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
教师实习自我鉴定
2013/12/11 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
工地安全标语
2014/06/07 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
撤诉状格式范本
2015/05/19 职场文书
房贷工资证明范本
2015/06/12 职场文书
《将心比心》教学反思
2016/02/23 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers