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. 参考资料

  1. python 命名规范