Python的类的下划线命名的区别

Posted limalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的类的下划线命名的区别相关的知识,希望对你有一定的参考价值。

 

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

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

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

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

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

 

 

1,_xxx表示的是protected类型的变量,不能用于 from module import *,即保护类型只允许这个类本身与子类进行访问。

2,__xxx表示的是私有类型的变量,只能允许这个类本身进行访问,连子类也不能访问。

3,__xxx__表示特殊变量,如__init__,__del__,__call__

 

 

 
 

作者:知乎用户
链接:https://www.zhihu.com/question/19754941/answer/12860775

 

以上是关于Python的类的下划线命名的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

python基础 类

菜鸟学python-基础

你如何 PEP 8 命名一个名称是首字母缩略词的类?

Python命名规范

python之下划线的命名规则以及作用