5.9. 私有函数

与大多数语言一样,Python 也有私有的概念:

与大多数的语言不同,时时彩计划软件公式:一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。

如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的;其它所有的都是公有的。 Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中)。类方法或者是私有 (只能在它们自已的类中使用) 或者是公有 (任何地方都可使用)。

MP3FileInfo 中,有两个方法:__parse__setitem__。正如我们已经讨论过的,__setitem__ 是一个专有方法;通常,你不直接调用它,而是通过在一个类上使用字典语法来调用,但它是公有的,并且如果有一个真正好的理由,你可以直接调用它 (甚至从 fileinfo 模块的外面)。然而,__parse 是私有的,因为在它的名字前面有两个下划线。

Python 中,所有的专用方法 (像 __setitem__) 和内置属性 (像 __doc__) 遵守一个标准的命名习惯:开始和结束都有两个下划线。不要对你自已的方法和属性用这种方法命名;到最后,它只会把你 (或其它人) 搞乱。

例 5.19. 尝试调用一个私有方法

>>> import fileinfo
>>> m = fileinfo.MP3FileInfo()
>>> m.__parse("/music/_singles/kairo.mp3") 
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'MP3FileInfo' instance has no attribute '__parse'
如果你试图调用一个私有方法,Python 将引发一个有些误导的异常,宣称那个方法不存在。当然它确实存在,但是它是私有的,所以在类外是不可使用的。严格地说,私有方法在它们的类外是可以访问的,只是不容易 处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的。你可以通过 _MP3FileInfo__parse 名字来使用 MP3FileInfo 类的 __parse 方法。知道了这个方法很有趣,然后要保证决不在真正的代码中使用它。私有方法由于某种原因而私有,但是像其它很多在 Python 中的东西一样,它们的私有化基本上是习惯问题,而不是强迫的。

进一步阅读

世爵时时彩平台地址 凤凰时时彩官网登录 重庆时时彩开奖最新结果 优博时时彩登录网址 时时彩什么玩法最稳
全球通时时彩平台骗局 领航二星时时彩软件 时时彩大小单双计划 时时彩龙虎合有规律吗 大乐透彩神通软件
优博时时彩 领航时时彩软件公式 彩票计划软件手机版本 时时彩后二直选复式 红树林重庆时时彩真假
诺亚方舟软件 易位时时彩软件最新版 江西时时彩后2走势图 时时彩平台奖金 时时彩代理做了一年
内蒙古时时彩预测软件手机版下载 百家 乐十注公式怎么打 北京赛车pk10直播52 上海十一选五开奖查询结果 全天北京快乐8免费计划
内蒙古十一选五前三直 东方女孩报码聊天室 江西时时彩任二技巧 江西多乐彩万能八码 北京pk10冠军8码
河北福利彩票排列7 排列三专家杀号 北京pk10免费软件 安徽快3基本走势 快乐10分前三直测算
美国一分彩 重庆时时彩申请 云南十一选五开奖查询 时时彩群 浙江快乐12开奖结果