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 相关文章推荐
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python三级菜单的实例
Sep 13 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Django发送邮件功能实例详解
Sep 02 Python
Python中的延迟绑定原理详解
Oct 11 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
python生成特定分布数的实例
Dec 05 Python
Python中的Cookie模块如何使用
Jun 04 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
python性能测试工具locust的使用
Dec 28 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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
PHP关联链接常用代码
2012/11/05 PHP
php获取汉字首字母的函数
2013/11/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
Python中交换两个元素的实现方法
2018/06/29 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python坐标线性插值应用实现
2019/11/13 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
营业员演讲稿
2013/12/30 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
2015毕业寄语大全
2015/02/26 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis