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中的文件和目录操作实现代码
Mar 13 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
使用Python编写简单的画图板程序的示例教程
Dec 08 Python
python实现发送和获取手机短信验证码
Jan 15 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
python保存数据到本地文件的方法
Jun 23 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
百度地图api如何使用
2015/08/03 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
跟老齐学Python之用Python计算
2014/09/12 Python
python九九乘法表的实例
2017/09/26 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
python 写一个文件分发小程序
2020/12/05 Python
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
个人担保书范文
2014/05/20 职场文书
大型公益活动策划方案
2014/08/20 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python