参考文章

文章大致内容摘要:

  1. python没有所谓的private变量或public变量,约定俗成使用下划线开头的变量为私有变量

  2. python对以两个下划线开头的变量,进行命名改编(name mangling)。例如__local, 改编为_LocalProxy__local, 其中LocalProxy__local所在的类的类名

举例:

1
2
3
4
5
6
class A:
    def __init__(self):
        self.__private = 2333

a = A()
a.__private

运行上面代码将报错,a无法访问__private, 因为__private已经被改名为_A__private, 可以通过dir(a)进行查看

注意一点: __private这个变量名在类A内部可以使用,但是在外部不能使用,而_A_private类的内部与外部都可以使用