首页 > 编程语言 > 详细

python中带下划线的变量和函数的意义

时间:2016-01-07 11:34:50      阅读:292      评论:0      收藏:0      [点我收藏+]

表示私有属性,只能在自己的实例方法里面访问。 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/
 
 
 

 

python中带下划线的变量和函数的意义

原文:http://www.cnblogs.com/wjoyxt/p/5109067.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!