单下划线和双下滑线

有三种情况 :

  1. _x :私有变量(保护变量),只有类对象和子类对象能够访问这些变量(但是避免类外面使用)
  2. __x: 私有变量,外部访问违法
  3. __x__: 系统定义,只有类对象自己能访问
class A:
    def _a(self):
        return '单下滑线'
    def __b(self):
        return '双下划线'
    def __c__(self):
        return '双下划线2'
    def bb(self):
        return self.__b()

class B(A):
    def __init__(self):
        super().__init__()  调用父类的方法

a = A()
print(a._a())         单下滑线
print(a.__b())        # 报错
print(a.__c__())      双下划线2
print a.bb()          双下划线

b = B()
print(b._a())        单下滑线
print(b.__b())       # 报错
print(b.__c__())     双下划线2
结论:

1、_xxx 不能用于’from module import *’ 以单下划线开头的表示的是protected(受保护的)类型的变量。即保护类型只能允许其本身与子类进行访问。

2、__xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以

3、__xxx___ 定义的是特列方法。像__init__之类的

你可能感兴趣的:(单下划线和双下滑线)