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方法。知道了这个方法很有趣,然后要保证决不在真正的html" target="_blank">代码中使用它。
私有方法由于某种原因而私有,但是像其它很多在 Python 中的东西一样,它们的私有化基本上是习惯问题,而不是强迫的。
希望通过本文大家能够理解掌握Python 私有函数的使用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
问题内容: 我看到很多执行“松散”私有变量/功能的python代码。他们将用一个下划线(例如_foo)声明函数/变量,然后仅在类/文件中使用它。他们不使用双下划线确实让我感到烦恼,因为最终,有人会从班级外部将此人称为“私人”成员。 是否有某种方法可以在单个下划线上强制执行隐私(不更改为双下划线)?谢谢! 问题答案: 否。这就是python的理念:不要让编译器/解析器强制执行隐私,因为 想要 访问私
本文向大家介绍jQuery3.0中的buildFragment私有函数详解,包括了jQuery3.0中的buildFragment私有函数详解的使用技巧和注意事项,需要的朋友参考一下 时隔 3 个月,jQuery 团队终于发布了 3.0 Alpha 版本。有两个版本 jQuery compat 3.0 和 jQuery 3.0。 jQuery compat 3.0 对应之前的 1.x, 兼容更多的
本文向大家介绍Python 含参构造函数实例详解,包括了Python 含参构造函数实例详解的使用技巧和注意事项,需要的朋友参考一下 本篇博文主要介绍在Python3中如何构造含参构造函数 样例如下: 输出结果毫无疑问是 admin\n 123\n 通过样例可以看到主要是复写了init 函数的方式来完成的。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Python中常用的高阶函数实例详解,包括了Python中常用的高阶函数实例详解的使用技巧和注意事项,需要的朋友参考一下 前言 高阶函数指的是能接收函数作为参数的函数或类;python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. lambda 当在使用一些函数的时候,我们不需要显式定义函数名称,直接传入lambda匿名函数即可。lambda匿名函数通常和其他函数搭配使用
本文向大家介绍实例讲解Python中的私有属性,包括了实例讲解Python中的私有属性的使用技巧和注意事项,需要的朋友参考一下 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 执行输出: 访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错: 执行结果: 1 lisi 在Python中就算继承也不能相互访问私有变量,如: 执行
本文向大家介绍Docker 私有仓库恢复实例详解,包括了Docker 私有仓库恢复实例详解的使用技巧和注意事项,需要的朋友参考一下 Docker 私有仓库恢复 之前openstack平台由于停电等影响,导致之前制作的registry 私有仓库的主机挂掉,还好数据挂载在nfs中,然后现在尝试重新启动恢复。 虚机安装nfs服务 apt-get install -y nfs-common 编辑 /etc