Python 私有函数的实例详解


Posted in Python onSeptember 11, 2017

Python 私有函数的实例详解

与大多数语言一样,Python 也有私有的概念:

• 私有函数不可以从它们的模块外面被调用
• 私有类方法不能够从它们的类外面被调用
• 私有属性不能够从它们的类外面被访问

与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。

如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的;其它所有的都是公有的。

Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中)。类方法或者是私有 (只能在它们自已的类中使用) 或者是公有 (任何地方都可使用)。

在 MP3FileInfo 中,有两个方法:__parse 和 __setitem__。正如我们已经讨论过的,__setitem__ 是一个专有方法;通常,你不直接调用它,而是通过在一个类上使用字典语法来调用,但它是公有的,并且如果有一个真正好的理由,你可以直接调用它 (甚至从 fileinfo 模块的外面)。然而,__parse 是私有的,因为在它的名字前面有两个下划线。

Note: Method Naming C onventions

在 Python 中,所有的专用方法 (像 __setitem__) 和内置属性 (像 __doc__) 遵守一个标准的命名习惯:开始和结束都有两个下划线。不要对你自已的方法和属性用这种方法命名;到最后,它只会把你 (或其它人) 搞乱。

1. 尝试调用一个私有方法

>>> import fileinfo 
>>> m = fileinfo.MP3FileInfo() 
>>> m.__parse("/music/_singles/kairo.mp3") (1) 
Traceback (innermost last): 
 File "<interactive input>", line 1, in ? 
AttributeError: 'MP3FileInfo' instance has no attribute '__parse'

(1)  如果你试图调用一个私有方法,Python 将引发一个有些误导的异常,宣称那个方法不存在。当然它确实存在,但是它是私有的,所以在类外是不可使用的。严格地说,私有方法在它们的类外是可以访问的,只是不容易处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的。你可以通过 _MP3FileInfo__parse 名字来使用 MP3FileInfo 类的 __parse方法。知道了这个方法很有趣,然后要保证决不在真正的代码中使用它。

私有方法由于某种原因而私有,但是像其它很多在 Python 中的东西一样,它们的私有化基本上是习惯问题,而不是强迫的。

希望通过本文大家能够理解掌握Python 私有函数的使用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 Python
Python自动发邮件脚本
Mar 31 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
名片管理系统python版
Jan 11 Python
使用Python设计一个代码统计工具
Apr 04 Python
Python selenium抓取微博内容的示例代码
May 17 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
python函数map()和partial()的知识点总结
May 26 Python
Python如何发送与接收大型数组
Aug 07 Python
Python模拟用户登录验证
Sep 11 #Python
Python模拟三级菜单效果
Sep 11 #Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 #Python
Python 模拟购物车的实例讲解
Sep 11 #Python
python添加模块搜索路径方法
Sep 11 #Python
解决Django模板无法使用perms变量问题的方法
Sep 10 #Python
python实现批量修改文件名代码
Sep 10 #Python
You might like
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
11行JS代码制作二维码生成功能
2018/03/09 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
临床护理求职信
2014/04/26 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
西柏坡导游词
2015/02/05 职场文书
工程部岗位职责范本
2015/04/11 职场文书
新年晚会开场白
2015/05/29 职场文书
微信小程序和php的登录实现
2021/04/01 PHP