Python 私有函数的实例详解

作者:lxgwm2008 时间:2023-03-07 08:30:40 

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 私有函数的使用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/lxgwm2008/article/details/9253945

标签:Python,私有函数
0
投稿

猜你喜欢

  • python实现简单井字棋小游戏

    2023-01-15 05:14:57
  • 教你使用Python提取视频中的美女图片

    2021-05-21 22:41:50
  • Python的Twisted框架中使用Deferred对象来管理回调函数

    2021-01-04 09:01:23
  • python中的随机函数random的用法示例

    2022-09-18 01:17:22
  • Laravel框架表单验证格式化输出的方法

    2022-05-25 04:49:52
  • 认清区别CSS的类class和id

    2007-10-08 12:02:00
  • Mysql中的触发器定义与使用

    2024-01-26 10:37:45
  • PHP 图片文件上传实现代码

    2024-05-09 14:48:53
  • python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

    2021-01-14 10:20:29
  • OpenCV实现对象跟踪的方法

    2022-02-06 04:23:42
  • Python一些线程的玩法总结

    2023-03-13 12:02:18
  • ASP连接MySQL数据库代码示例

    2010-03-14 11:24:00
  • python 爬取小说并下载的示例

    2023-08-24 19:31:49
  • python基础之贪婪模式与非贪婪模式

    2023-01-18 04:14:36
  • python技巧分享Excel创建和修改

    2022-01-09 12:04:59
  • 如何固定表格的标题行和标题列

    2007-09-20 13:03:00
  • python httpx的具体使用

    2021-05-31 21:42:28
  • 用Dreamweaver设计实现网页过渡转换功能

    2008-09-04 10:09:00
  • javascript读取xml

    2024-04-23 09:30:13
  • 详解用python实现爬取CSDN热门评论URL并存入redis

    2022-08-30 00:11:35
  • asp之家 网络编程 m.aspxhome.com