zoukankan      html  css  js  c++  java
  • python中带下划线的变量和函数的意义

    表示私有属性,只能在自己的实例方法里面访问。 self.__name会被编译成self._Bar__name以达到“不被外部访问”的效果 

    示例如下:

    变量:
    1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量
    2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量,
    3.  大写加下划线的变量:  标明是 不会发生改变的全局变量
     
    函数:
    1. 前带_的变量: 标明是一个私有函数, 只用于标明,
    2.  前带两个_ ,后带两个_ 的函数:  标明是特殊函数
     
     
     

    Python没有真正的私有变量。内部实现上,是将私有变量进程了转化,规则是:_<类名><私有变量>

    下面的小技巧可以获取私有变量:

     
    1 class Test(object):
    2     def __init__(self):
    3         self.__zzz=111
    4 
    5 if __name__ == '__main__':
    6     a =  Test()
    7     print a._Test__zzz
     

    同样,通过a._Test__zzz=222的方式,可以修改私有变量的值。

    通过dir(Test)和dir(a)可以看到类属性和其实例属性之间的区别:

     
    print dir(Test)
    print dir(a)
    ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
    ['_Test__zzz', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
     
     
     
     
    参考资料: http://www.blogjava.net/lincode/archive/2011/02/02/343859.html
                   http://python.jobbole.com/81129/
     
     
     
  • 相关阅读:
    匈牙利算法demo
    linux/windows 文件共享--Samba环境搭建
    神经网络参数量和计算量计算
    C/C++ 开发中使用第三方库常见问题总结
    linux 如何更改docker的默认存储磁盘
    目录下文件递归查找
    c++ 项目开发技巧
    Finding Tiny faces 思想解析
    美女与硬币问题
    深度优先遍历解决连通域求解问题-python实现
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/5109067.html
Copyright © 2011-2022 走看看