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/
     
     
     
  • 相关阅读:
    LVS-三种负载均衡方式比较
    keepalived和heartbeat区别
    vmware-question
    SQL Server MYSQL 检查点的好处
    MYSQL 引擎的情况
    MYSQL 关闭服务的过程
    SQL Server 行的删除与修改-------------(未完待续P222 deep SQL Server 222 )
    SQL Server一些重要视图 1
    SQL Server 查看数据页面
    SQL Server 向堆表中插入数据的过程
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/5109067.html
Copyright © 2011-2022 走看看