zoukankan      html  css  js  c++  java
  • 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第十四课--排序及自定义函数之案例一:选择排序
    python第十四课--排序及自定义函数
    python第十三课——嵌套循环
    python第十二课——for in循环
    python第十一课——转换结构
    10 Memcached 一致性哈希分布式算法原理与实现[PHP实现]
    09 Memcached 分布式之取模算法的缺陷
    修改防火墙禁用的80端口
    linux 上安装apache 出现 configure: error: APR not found. Please read the documentation错误
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/10743384.html
Copyright © 2011-2022 走看看