1,以一个下划线开头的命名 ,如_getFile
2,以两个下划线开头的命名 ,如__filename
3,以两个下划线开头和结尾的命名,如 __init__()
4,其它
这些命名有什么不同吗

首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。

在 Python 的官方推荐的代码样式中,还有一种单下划线结尾的样式,这在解析时并没有特别的含义,但通常用于和 Python 关键词区分开来,比如如果我们需要一个变量叫做 class,但 class 是 Python 的关键词,就可以以单下划线结尾写作 class_。

双下划线开头的命名形式在 Python 的类成员中使用表示名字改编 (Name Mangling),即如果有一 Test 类里有一成员 __x,那么 dir(Test) 时会看到 _Test__x 而非 __x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。

双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的 __init__、__del__、__add__、__getitem__ 等,以及全局的 __file__、__name__ 等。 Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。

另外单下划线开头还有一种一般不会用到的情况在于使用一个 C 编写的扩展库有时会用下划线开头命名,然后使用一个去掉下划线的 Python 模块进行包装。如 struct 这个模块实际上是 C 模块 _struct 的一个 Python 包装。

更多关于命名的内容可以参考 PEP 8 《代码风格指南》的 Name Conventions 一节:http://www.python.org/dev/peps/pep-0008/

需要说明的是,由于这份文档看起来经过多次修改,双下划线开头的用法似乎曾经如 @makestory 所说,建议为类的私有成员,至少啄木鸟社区的 PEP 8 译文是这样写的,但 PEP 8 当前的官方版本中并没有体现。

转载于:https://www.cnblogs.com/leonardchen/p/7112935.html

Python 的类的下划线命名有什么不同?相关推荐

  1. python:类5——Python 的类的下划线命名有什么不同?

    首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入.不过值得注 ...

  2. python类实例化 输入参数名字 下划线_Python 的类的下划线命名有什么不同?

    1,以一个下划线开头的命名 ,如_getFile 2,以两个下划线开头的命名 ,如__filename 3,以两个下划线开头和结尾的命名,如 __init__() 4,其它 这些命名有什么不同吗 首先 ...

  3. 【从零学Python】关于python下划线命名的事儿、enumerate()

    一. Python 的类的下划线命名有什么不同 1,以一个下划线开头的命名 ,如_getFile 这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_ ...

  4. Python什么是闭包、闭包特征、定义闭包传入一个数求和并输出,定义一个装饰器:打印函数运行花费的时间,定义一个类:要求:包含一个对象属性,且用_(单下划线)命名的定义一个类方法(装饰器)

    1. 闭包.闭包特征及应用 1.1 什么是闭包? 闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数; 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包 ...

  5. python 下划线转驼峰_json字符串中key值下划线命名转换为驼峰命名

    json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...

  6. python怎么打下划线符号_详解 Python 中的下划线命名规则

    在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后--那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...

  7. 【Python】标识符 ( Python 标识符命名规则 - 强制性 | 内容限定 | 大小写敏感 | 非关键字 | Python 标识符命名规范 - 建议性 | 下划线命名法 | 英文字母全小写 )

    文章目录 一.Python 标识符 1.Python 标识符命名规则 ( 强制性 ) 2.Python 标识符命名规范 ( 建议性 ) 二.代码示例 1.内容限定代码示例 2.大小写敏感 3.非关键字 ...

  8. Python下划线命名模式

    ?Python下划线命名模式 - 摘要 以下是我在本文中介绍的五个下划线模式在Python中的快速摘要或"备忘单": 图案 例 含义 单领先下划线 _var 指示名称的命名约定供内 ...

  9. php类属性命名驼峰还是下划线,PHP实现驼峰命名和下划线命名互转

    本篇文章教大家实现驼峰命名和下划线命名互转,在php开发中经常需要两种命名法互相转换,下面为大家提供两种实现方式. 第一种方法效率相对差一些,实现方式如下://驼峰命名转下划线命名 function ...

  10. python中标识符下划线用作开头_python python中那些双下划线开头的那些函数都是干啥用用的...

    1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...

最新文章

  1. c获取当前系统时间_Python系统:程序和进程
  2. Opencv载入图片并显示的问题
  3. 使用 C# 9 的records作为强类型ID - 初次使用
  4. 星恒发布“超锂S7” 新品 采用第7代锰系多元复合锂技术打造
  5. mysql 复制_MySQL的复制功能
  6. 提交App中断出现 Cannot proceed with delivery an existing transporter instan
  7. GNS3 1.5.2 无法上传文件的解决办法
  8. 线性回归、岭回归、Lasso回归
  9. 10个互联网兼职平台,让你的一技之长变现,副业薪资比日常搬砖高也太爽了
  10. 软件测试 | 期末复习——软件测试综述
  11. css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
  12. 2021年起重机械指挥考试技巧及起重机械指挥考试试题
  13. linux查看tcp连接日志,linux下tcp状态是从哪查出来的
  14. PHP的Apache自带的ab压力测试
  15. java怎么写桌面日历_基于java的桌面日历系统的设计与实现毕业设计论文最终版.doc...
  16. mnist数据集百度云链接
  17. 企业微信号文章标题获取之抓包工具Fiddler安装(Macbook)
  18. 小小爬虫很狂暴-----day01
  19. 黑苹果(i7-4790,华硕B85-plus主板)的过程
  20. 数据分析师需要具备哪些技能?如何拿到月薪20K+数据分析师OFFER?

热门文章

  1. HazeOver For Mac(管理窗口工具)
  2. 如何在苹果MacBook Pro上打开和使用Touch Bar Zoom?
  3. Scrivener for Mac如何自定义快捷键
  4. JS有哪几种传参方式?
  5. Sass的安装(windows 10)
  6. 如何交付机器学习项目:一份机器学习工程开发流程指南 1
  7. 思科称可能是宇宙射线触发了路由器bug
  8. 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4...
  9. 设计图案之间关系的代码实现
  10. Varnish加速网站图片显示