码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-01-07 11:37:58      阅读:190      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!