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文件夹与文件的操作实现代码
Jul 13 Python
Python中给List添加元素的4种方法分享
Nov 28 Python
python概率计算器实例分析
Mar 25 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
python中的django是做什么的
Jul 31 Python
python爬虫之爬取笔趣阁小说
Apr 22 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代码
2006/12/06 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
Python set集合类型操作总结
2014/11/07 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
bpython 功能强大的Python shell
2016/02/16 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
Django静态文件加载失败解决方案
2020/08/26 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
异常和异常类的概念
2014/09/12 面试题
护士试用期自我鉴定
2014/02/08 职场文书
个人承诺书格式
2014/06/03 职场文书
建筑施工安全责任书
2014/07/24 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
投诉书范文
2015/07/02 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android