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之编写类之一创建实例
Oct 11 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python制作钉钉加密/解密工具
Dec 07 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Python socket处理client连接过程解析
Mar 18 Python
Python实现自动打开电脑应用的示例代码
Apr 17 Python
win10安装python3.6的常见问题
Jul 01 Python
Python面试不修改数组找出重复的数字
May 20 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
使用数据库保存session的方法
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
python基于右递归解决八皇后问题的方法
2015/05/25 Python
使用python实现ANN
2017/12/20 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
会议开场欢迎词
2014/01/15 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
地球一小时倡议书
2014/04/15 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
大学开学感言
2015/08/01 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技