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
在解释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()