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 语法 可用