python私有属性和方法实例分析


Posted in Python onJanuary 15, 2015

本文实例分析了python的私有属性和方法。分享给大家供大家参考。具体实现方法如下:

python默认的成员函数和成员变量都是公开的,并且没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。 在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。 比如:

class Person:
   def __init__(self):

       self.__name = 'haha'#私有属性

       self.age = 22
   def __get_name(self):##私有方法

       return self.__name
   def get_age(self):

       return self.age
person = Person()

print person.get_age()

print person.__get_name()

运行结果是:22 Traceback (most recent call last): File "E:\pythoner\zenghe\jay.py", line 38, in print person.__get_name() AttributeError: Person instance has no attribute '__get_name'

我们这里定义的__name是私有属性,__get_name()是私有方法。如果直接访问的话,会提示找不到相关的属性或者方法,但是如果你真要访问私有的相关数据的话, 也是可以访问的,严格地说,私有方法在它们的类外是可以访问的,只是不容易 处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
Python进阶之尾递归的用法实例
Jan 31 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python networkx 根据图的权重画图实现
Jul 10 Python
Python  Django 母版和继承解析
Aug 09 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
python实现堆栈与队列的方法
Jan 15 #Python
python多线程用法实例详解
Jan 15 #Python
Python中os.path用法分析
Jan 15 #Python
python静态方法实例
Jan 14 #Python
python继承和抽象类的实现方法
Jan 14 #Python
python列表操作实例
Jan 14 #Python
python操作gmail实例
Jan 14 #Python
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
jQuery select操作控制方法小结
2010/05/26 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Python 3中的yield from语法详解
2017/01/18 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Python笔记之facade模式
2019/11/20 Python
python基于opencv检测程序运行效率
2019/12/28 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
python实现图像拼接功能
2020/03/23 Python
python中time.ctime()实例用法
2021/02/03 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
普天C++笔试题
2016/03/20 面试题
超市开学活动方案
2014/03/01 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js