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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python爬虫-模拟微博登录功能
Sep 12 Python
python 字符串常用方法汇总详解
Sep 16 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
python求前n个阶乘的和实例
Apr 02 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Python 如何测试文件是否存在
Jul 31 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 Python
Python turtle编写简单的球类小游戏
Mar 31 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 项目的方法
2007/01/02 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
django基于restframework的CBV封装详解
2019/08/08 Python
用python批量移动文件
2021/01/14 Python
旅游个人求职信范文
2014/01/30 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
天猫活动策划方案
2014/08/21 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
婚前保证书范文
2015/02/28 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python