13. 命名规范
13.1. 后缀单下划线
避免与关键字冲突:
class_ = 1
13.2. 前缀单下划线
不能被 from module_name import *
导入。
对于类的成员变量和成员函数:
_var
:保护成员(protected),类对象可以在外部访问
_func
:保护成员(protected),类对象可以在外部访问
13.3. 前缀双下划线
不能被 from module_name import *
导入。
对于类的成员变量和成员函数:
__var
:私有成员(private),类对象不可以在外部访问
__func
:私有成员(private),类对象不可以在外部访问
1## ac.py
2_global = 10
3def _func():
4 print "_func"
5
6class A:
7 var = 100 ## 类变量(类对象共有)
8 def __init__(self):
9 self._a = 0 ## protected
10 self.__b = 1 ## private
11 self.c = 2
12
13 def _foo(self):
14 print "_foo"
15
16 def __foo(self):
17 print "__foo"
18
19 def foo(self):
20 print "foo"
21 print "__b:", self.__b
1>>> from ac import *
2>>> obj = A()
3>>> print obj.var
4100
5>>> print obj.c
62
7>>> obj.foo()
8foo
9__b: 1
10
11>>> print obj._a
120
13>>> print obj._foo()
14_foo
15
16>>> print obj.__b
17AttributeError: A instance has no attribute '__b'
18
19>>> print _global
20NameError: name '_global' is not defined
13.4. 前后双下划线
内建方法,如:
__doc__
__name__
13.5. 参考资料
python 命名规范