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

python单/双下划线使用

时间:2016-11-03 13:34:53      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:ror   机制   name   sys   ble   erro   python编程   c++   odi   

在Python编程中经常会遇到函数(function),方法(method)及属性(attribute)以下划线‘_‘作为前缀,这里做个总结。

主要存在四种情形:
1 1. object # public
2 2. __object__ # special, python system use, user should not define like it
3 3. __object # private (name mangling during runtime)
4 4. _object # obey python coding convention, consider it as private
1和2两种情形比较容易理解,不多做解释,最迷惑人的就是3和4情形。
在解释3和4情形前,首先了解下python有关private的描述,python中不存在protected的概念,要么是public要么就是private,但是python中的private不像C++, Java那样,它并不是真正意义上的private,通过name mangling(名称改编,下面例子说明)机制就可以访问private了。
 1 class Foo():
 2     def __init__():
 3         ... 
 4     def public_method():
 5         print This is public method
 6     def __fullprivate_method():
 7         print This is double underscore leading method
 8     def _halfprivate_method():
 9         print This is one underscore leading method
10 
11 f = Foo()
12 f.public_method() # OK
13 f.__fullprivate_method() # Error occur
14 f._halfprivate_method() # OK

上文已经说明了,python中并没有真正意义的private,见以下方法便能够访问__fullprivate_method()

  

python单/双下划线使用

标签:ror   机制   name   sys   ble   erro   python编程   c++   odi   

原文地址:http://www.cnblogs.com/chris-cp/p/6025934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!