Python 私有函数的实例详解

发布时间 - 2026-01-11 03:11:45    点击率:

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  # 私有函数  # 私有函数的使用方法  # 私有函数理解应用  # Python类如何定义私有变量  # Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解  # 浅谈Python中的私有变量  # Python面向对象之私有属性和私有方法应用案例分析  # Python 类的私有属性和私有方法实例分析  # Python面向对象程序设计之私有属性及私有方法示例  # Python中私有属性的定义方式  # Python 私有化操作实例分析  # python里运用私有属性和方法总结  # python直接访问私有属性的简单方法  # 跟老齐学Python之私有函数和专有方法  # Python面向对象程序设计之私有变量  # 私有方法原理与用法分析  # 下划线  # 它是  # 你可以  # 或者是  # 不能够  # 类中  # 都是  # 是一个  # 直接调用  # 如果你  # 有两个  # 都有  # 也有  # 地说  # 如有  # 不可以  # 对你  # 你不  # 希望能  # 不容易 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel如何实现API版本控制_Laravel版本化API设计方案  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  iOS验证手机号的正则表达式  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  在线教育网站制作平台,山西立德教育官网?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何实现API资源集合?(Resource Collection教程)  Python制作简易注册登录系统  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Android okhttputils现在进度显示实例代码  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  javascript基本数据类型及类型检测常用方法小结  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  原生JS实现图片轮播切换效果  如何在建站主机中优化服务器配置?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  googleplay官方入口在哪里_Google Play官方商店快速入口指南  EditPlus 正则表达式 实战(3)  韩国服务器如何优化跨境访问实现高效连接?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何用虚拟主机快速搭建网站?详细步骤解析  如何在云主机上快速搭建多站点网站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Windows Hello人脸识别突然无法使用  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何为不同团队 ID 动态生成多个独立按钮  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  JavaScript如何操作视频_媒体API怎么控制播放  高端智能建站公司优选:品牌定制与SEO优化一站式服务  nodejs redis 发布订阅机制封装实现方法及实例代码  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在香港服务器上快速搭建免备案网站?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  用v-html解决Vue.js渲染中html标签不被解析的问题  微信h5制作网站有哪些,免费微信H5页面制作工具?  大连网站制作公司哪家好一点,大连买房网站哪个好?