Python 私有函数
来源:互联网 发布:新闻类数据库设计 编辑:程序博客网 时间:2024/06/14 06:44
与大多数语言一样,Python 也有私有的概念:
• 私有函数不可以从它们的模块外面被调用
• 私有类方法不能够从它们的类外面被调用
• 私有属性不能够从它们的类外面被访问
(1) 如果你试图调用一个私有方法,Python 将引发一个有些误导的异常,宣称那个方法不存在。当然它确实存在,但是它是私有的,所以在类外是不可使用的。严格地说,私有方法在它们的类外是可以访问的,只是不容易处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的。你可以通过 _MP3FileInfo__parse 名字来使用 MP3FileInfo 类的 __parse方法。知道了这个方法很有趣,然后要保证决不在真正的代码中使用它。
私有方法由于某种原因而私有,但是像其它很多在 Python 中的东西一样,它们的私有化基本上是习惯问题,而不是强迫的。
• 私有函数不可以从它们的模块外面被调用
• 私有类方法不能够从它们的类外面被调用
• 私有属性不能够从它们的类外面被访问
与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。
如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的;其它所有的都是公有的。 Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中)。类方法或者是私有 (只能在它们自已的类中使用) 或者是公有 (任何地方都可使用)。
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学习之私有函数、私有变量
- Python类中的私有成员(私有函数,私有变量)
- Python类中的私有成员(私有函数,私有变量)
- Python之私有函数和专有方法
- Python中定义“私有”成员变量和成员函数
- Python中定义“私有”成员变量和成员函数
- Python中定义“私有”成员变量和成员函数
- Python中定义“私有”成员变量和成员函数
- Python中定义“私有”成员变量和成员函数
- Python中定义“私有”成员变量和成员函数
- 私有构造函数 私有析构函数
- 私有构造函数,私有析构函数
- 私有构造函数 私有析构函数
- 私有构造函数 私有析构函数
- 私有构造函数 私有析构函数
- 私有构造函数 私有析构函数
- iPhone / iPod Touch 文件传输解决方案 – Cocoa Web Resource Project
- 一个高效的内存池实现
- SPRING两本书
- MyEclipse8.0集成JBPM3.2.3
- hdu 4524 郑厂长系列故事——逃离迷宫 小水题
- Python 私有函数
- [Core Java. Volume I. Fundamentals, 8th Edition]-7,8
- google blink的设计计划: Out-of-Progress iframes
- 改变UITabBarController的高度方法
- c++中c_str() 和 strtok 的用法
- 配置centos成功(图)
- inotes英文版的问题
- flex 连接服务器,进行直播
- 基于MINA框架快速开发网络应用程序