python 中的 _ 和__ 开头的变量和方法
class A: _variable_one_class = '_variable_one_class' __variable_two_class = '__variable_two_class' def __init__(self): self._variable_one = '_variable_one' self.__variable_two = '__variable_two' def _one_sub_func(self): print('_one_sub') def __two_sub_func(self): print('__two_sub_func') def test(self): print(self.__variable_two) class B(A): def test(self): pass def _one_sub_func(): print('_one_sub_func') def __two_sub_func(): print('__two_sub_func') a = A() b = B() # 属性 print(A.__dict__) # 本质上,双下划线的变量或者方法 在A.__dict__ 中 __开头的方法或者属性以_A开头存储的 print(a._variable_one) # 实例的变量,实例能访问,可以被继承 print(a._variable_one_class) #类变量, 实例能访问,可以被继承 # print(a.__variable_two) 实例的变量 实例不能访问,不可以被继承 # print(a.__variable_two_class) 类变量 实例不能访问,不可以被继承 print(A._variable_one_class) print(B._variable_one_class) # 方法 属性一样 a._one_sub_func() # a.__two_sub_func() B._one_sub_func(a) A._one_sub_func(a) variable='variable' # import * /包名 可用 _variable_one_class = '_variable_one_module' # import * 不可用,from XX import XX 语法 可用 __variable_two_class = '__variable_two_module' # import * 不可用,from XX import XX 语法 可用