- 新增现代 C++ 教程的 Preface 章节,包括英文和中文版本 - 添加 C++ Primer 练习代码 - 新增 Learn C++ 教程的 C++ 开发简介章节 - 添加头文件解析文档 - 更新 mkdocs.yml,包含新教程的目录结构 - 修改项目设置,使用 Python 3.10环境
717 lines
18 KiB
Plaintext
717 lines
18 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# C++的封装"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 1. 封装"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.1 封装属性和行为"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"① 封装是C++面向对象三大特性之一。\n",
|
||
"\n",
|
||
"② 封装的意义一:\n",
|
||
"\n",
|
||
"1. 将属性和行为作为一个整体,表现生活中的事物。\n",
|
||
"2. 将属性和行为加以权限控制。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"\n",
|
||
"const double PI = 3.14;\n",
|
||
"\n",
|
||
"//设计一个圆类,求圆的周长\n",
|
||
"//圆求周长的公式: 2 * PI * 半径\n",
|
||
"\n",
|
||
"//class 代表设计一个类,类后面紧跟着的就是类名称\n",
|
||
"class Circle\n",
|
||
"{\n",
|
||
" //访问权限\n",
|
||
" //公共权限\n",
|
||
" public: //是冒号,不是分号\n",
|
||
"\n",
|
||
" //属性\n",
|
||
" //半径\n",
|
||
" int m_r;\n",
|
||
"\n",
|
||
" //行为\n",
|
||
" //获取圆的周长\n",
|
||
" double calculateZC()\n",
|
||
" {\n",
|
||
" return 2 * PI * m_r;\n",
|
||
" }\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" //通过圆类 创建具体的圆(对象)\n",
|
||
" //实例化 (通过一个类 创建一个对象的过程)\n",
|
||
" Circle c1;\n",
|
||
" //给圆对象 的属性进行赋值\n",
|
||
" c1.m_r = 10;\n",
|
||
"\n",
|
||
" // 2 * PI * 10 = 62.8\n",
|
||
" cout << \"圆的周长为:\" << c1.calculateZC() << endl;\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
" \n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"运行结果: \n",
|
||
" - 圆的周长为:62.8"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.2 封装权限"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"① 类在设计时,可以把属性和行为放在不同的权限下,加以控制。\n",
|
||
"\n",
|
||
"② 封装的意义二:\n",
|
||
"\n",
|
||
"1. public 公共权限\n",
|
||
"2. protected 保护权限\n",
|
||
"3. private 私有权限"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"\n",
|
||
"//访问权限\n",
|
||
"//三种\n",
|
||
"//公共权限 public 类内可以访问成员 类外可以访问成员\n",
|
||
"//保护权限 protected 类内可以访问成员 类外不可以访问成员 子类可以访问父类中的保护内容\n",
|
||
"//私有权限 private 类内可以访问权限 类外不可以访问成员 子类不可以访问父类中的私有内容\n",
|
||
"\n",
|
||
"class Person\n",
|
||
"{\n",
|
||
"//公共权限\n",
|
||
"public: \n",
|
||
" string m_Name; //姓名\n",
|
||
"\n",
|
||
"protected:\n",
|
||
" string m_Car; //汽车\n",
|
||
"\n",
|
||
"private:\n",
|
||
" int m_Password; //银行卡密码\n",
|
||
"\n",
|
||
"public:\n",
|
||
" void func()\n",
|
||
" {\n",
|
||
" m_Name = \"李四\";\n",
|
||
" m_Car = \"奔驰\"; //保护权限内容,在类外访问不到\n",
|
||
" m_Password = 123;\n",
|
||
" }\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" //实例化具体对象\n",
|
||
" Person p1;\n",
|
||
" p1.m_Name = \"李四\";\n",
|
||
" p1.m_Car = \"奔驰\"; //保护权限内容,在类外访问不到\n",
|
||
" p1.m_Password = 123; //私有权限内容,在类外访问不到\n",
|
||
"\n",
|
||
" p1.func(); //公共权限内容,在类可以访问\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
"\n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.3 struct 和 class 区别"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"① 在C++中struct和class唯一的区别就在于默认的访问权限不同。\n",
|
||
"\n",
|
||
"② 区别:\n",
|
||
"\n",
|
||
"1. struct 默认权限为公共。\n",
|
||
"2. class 默认权限为私有。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"\n",
|
||
"//访问权限\n",
|
||
"//三种\n",
|
||
"//公共权限 public 类内可以访问成员 类外可以访问成员\n",
|
||
"//保护权限 protected 类内可以访问成员 类外不可以访问成员 子类可以访问父类中的保护内容\n",
|
||
"//私有权限 private 类内可以访问权限 类外不可以访问成员 子类不可以访问父类中的私有内容\n",
|
||
"\n",
|
||
"class C1\n",
|
||
"{\n",
|
||
" int m_A; // 默认权限是私有\n",
|
||
"};\n",
|
||
"\n",
|
||
"struct C2\n",
|
||
"{\n",
|
||
" int m_A; //默认权限 是公共\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" //struct 和 class 区别\n",
|
||
" //struct 默认权限是 公共 public\n",
|
||
" //class 默认权限是 私有 private\n",
|
||
" C1 c1;\n",
|
||
" c1.m_A = 100; //私有权限,不能访问\n",
|
||
"\n",
|
||
" C2 c2;\n",
|
||
" c2.m_A = 100; //公共权限,可以访问\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
" \n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.4 成员属性设置为私有"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"① 优点1:将所有成员属性设置为私有,可以自己控制读写权限。\n",
|
||
"\n",
|
||
"② 优点2:可以通过写权限,检测数据的有效性。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"#include <string>\n",
|
||
"\n",
|
||
"//成员属性设置为私有\n",
|
||
"//1、可以自己控制读写权限\n",
|
||
"//2、对于写可以检测数据的有效性\n",
|
||
"\n",
|
||
"class Person\n",
|
||
"{\n",
|
||
"public:\n",
|
||
" //设置姓名\n",
|
||
" void setName(string name)\n",
|
||
" {\n",
|
||
" m_Name = name;\n",
|
||
" }\n",
|
||
" //获取姓名\n",
|
||
" string getName()\n",
|
||
" {\n",
|
||
" return m_Name;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取年龄\n",
|
||
" int getAge()\n",
|
||
" {\n",
|
||
" m_Age = 0; //初始化为0岁\n",
|
||
" return m_Age;\n",
|
||
" }\n",
|
||
"\n",
|
||
" void setLover(string lover)\n",
|
||
" {\n",
|
||
" m_Lover = lover;\n",
|
||
" }\n",
|
||
"\n",
|
||
"private:\n",
|
||
" //姓名 可读可写\n",
|
||
" string m_Name;\n",
|
||
" //年龄 只读\n",
|
||
" int m_Age;\n",
|
||
" //情人 只写\n",
|
||
" string m_Lover;\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" Person p;\n",
|
||
" p.setName(\"张三\");\n",
|
||
"\n",
|
||
" cout << \"姓名为:\" << p.getName() << endl;\n",
|
||
"\n",
|
||
" cout << \"年龄为:\" << p.getName() << endl;\n",
|
||
"\n",
|
||
" //p.m_Age = 18; //私有权限,不可以改\n",
|
||
" p.getAge();\n",
|
||
" cout << \"姓名为:\" << p.getAge() << endl;\n",
|
||
"\n",
|
||
" p.setLover(\"小李\");\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
"\n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"运行结果: \n",
|
||
" - 姓名为:张三 \n",
|
||
" - 年龄为:0 \n",
|
||
" - 请按任意键继续. . ."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"#include <string>\n",
|
||
"\n",
|
||
"//成员属性设置为私有\n",
|
||
"//1、可以自己控制读写权限\n",
|
||
"//2、对于写可以检测数据的有效性\n",
|
||
"\n",
|
||
"class Person\n",
|
||
"{\n",
|
||
"public:\n",
|
||
" //设置姓名\n",
|
||
" void setName(string name)\n",
|
||
" {\n",
|
||
" m_Name = name;\n",
|
||
" }\n",
|
||
" //获取姓名\n",
|
||
" string getName()\n",
|
||
" {\n",
|
||
" return m_Name;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取年龄 可读可写 \n",
|
||
" int getAge()\n",
|
||
" {\n",
|
||
" return m_Age;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //设置年龄 如果想修改(年龄的范围必须是0~150之间)\n",
|
||
" void setAge(int age)\n",
|
||
" {\n",
|
||
" if (age < 0 || age>150)\n",
|
||
" {\n",
|
||
" m_Age = 0; //强制改为0\n",
|
||
" cout << \"你这个老妖精!\" << endl;\n",
|
||
" return; //强制退出\n",
|
||
" }\n",
|
||
" m_Age = age;\n",
|
||
" }\n",
|
||
"\n",
|
||
" void setLover(string lover)\n",
|
||
" {\n",
|
||
" m_Lover = lover;\n",
|
||
" }\n",
|
||
"\n",
|
||
"private:\n",
|
||
" //姓名 可读可写\n",
|
||
" string m_Name;\n",
|
||
" //年龄 只读\n",
|
||
" int m_Age;\n",
|
||
" //情人 只写\n",
|
||
" string m_Lover;\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" Person p;\n",
|
||
" p.setName(\"张三\");\n",
|
||
"\n",
|
||
" cout << \"姓名为:\" << p.getName() << endl;\n",
|
||
"\n",
|
||
"\n",
|
||
" //p.m_Age = 18; //私有权限,不可以类外改\n",
|
||
" p.setAge(1000); \n",
|
||
" cout << \"年龄为:\" << p.getAge() << endl;\n",
|
||
"\n",
|
||
" //设置情人为苍井女士\n",
|
||
" p.setLover(\"小李\"); //有这个函数可以设置\n",
|
||
" //cout << \"情人为:\" << p.getLover() << endl; //没有这个函数,不能获得\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
"\n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"运行结果: \n",
|
||
" - 姓名为:张三 \n",
|
||
" - 你这个老妖精! \n",
|
||
" - 年龄为:0 \n",
|
||
" - 请按任意键继续. . ."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.5 设计学生类"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"案例描述:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"#include<string>\n",
|
||
"\n",
|
||
"//设计学生类\n",
|
||
"class Student\n",
|
||
"{\n",
|
||
"public: //公共权限\n",
|
||
"\n",
|
||
" //类中的属性和行为 我们统一称为成员\n",
|
||
" // 属性 成员属性 成员变量\n",
|
||
" // 行为 成员函数 成员方法\n",
|
||
" \n",
|
||
" //属性\n",
|
||
" string m_Name; //姓名\n",
|
||
" int m_Id; //学号\n",
|
||
"\n",
|
||
" //行为\n",
|
||
" //显示姓名和学号\n",
|
||
" void showStudent()\n",
|
||
" {\n",
|
||
" cout << \"姓名:\" << m_Name << \" 学号:\" << m_Id << endl;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //给姓名赋值的行为\n",
|
||
" void setName(string name)\n",
|
||
" {\n",
|
||
" m_Name = name;\n",
|
||
" }\n",
|
||
"};\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" //创建一个具体学生 实例化对象\n",
|
||
" Student s1;\n",
|
||
" //给s1对象 进行属性赋值操作\n",
|
||
" s1.m_Name = \"张三\";\n",
|
||
" s1.m_Id = 1;\n",
|
||
"\n",
|
||
" s1.showStudent();\n",
|
||
"\n",
|
||
" Student s2;\n",
|
||
" s2.m_Name = \"李四\";\n",
|
||
" s2.m_Id = 2;\n",
|
||
" s2.showStudent();\n",
|
||
"\n",
|
||
" Student s3;\n",
|
||
" s3.setName(\"王五\");\n",
|
||
" s3.m_Id = 3;\n",
|
||
" s3.showStudent();\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
"\n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"运行结果: \n",
|
||
" - 姓名:张三 学号:1 \n",
|
||
" - 姓名:李四 学号:2 \n",
|
||
" - 姓名:王五 学号:3 \n",
|
||
" - 请按任意键继续. . ."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1.6 设计立方体类"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"案例描述:设计立方体类(Cube),求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#include <iostream>\n",
|
||
"using namespace std;\n",
|
||
"\n",
|
||
"//立方体类设计\n",
|
||
"//1、创建立方体类\n",
|
||
"//2、设计属性\n",
|
||
"//3、获取立方体面积和体积\n",
|
||
"//4、分别利用全局函数和成员函数 判断两个立方体是否相等\n",
|
||
"\n",
|
||
"class Cube\n",
|
||
"{\n",
|
||
"public:\n",
|
||
" //设置长\n",
|
||
" void setL(int l)\n",
|
||
" {\n",
|
||
" m_L = l;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取长\n",
|
||
" int getL()\n",
|
||
" {\n",
|
||
" return m_L;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //设置宽\n",
|
||
" void setW(int w)\n",
|
||
" {\n",
|
||
" m_W = w;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取宽\n",
|
||
" int getW()\n",
|
||
" {\n",
|
||
" return m_W;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //设置高\n",
|
||
" void setH(int h)\n",
|
||
" {\n",
|
||
" m_H = h;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取高\n",
|
||
" int getH()\n",
|
||
" {\n",
|
||
" return m_H;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取立方体面积\n",
|
||
" int calculateS()\n",
|
||
" {\n",
|
||
" return 2 * m_L * m_W + 2 * m_W * m_H + 2 * m_L * m_H;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //获取立方体体积\n",
|
||
" int calculateV()\n",
|
||
" {\n",
|
||
" return m_L * m_W * m_H;\n",
|
||
" }\n",
|
||
"\n",
|
||
" //利用成员函数判断两个立方体是否相等\n",
|
||
" bool isSameByClass(Cube c) //成员函数只需要传入一个类为参数\n",
|
||
" {\n",
|
||
" if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH()) //类内可以访问成员函数:m_L、m_W、m_H\n",
|
||
" {\n",
|
||
" return true;\n",
|
||
" }\n",
|
||
" else\n",
|
||
" {\n",
|
||
" return false;\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
"\n",
|
||
"private:\n",
|
||
" int m_L; //长\n",
|
||
" int m_W; //宽\n",
|
||
" int m_H; //高\n",
|
||
"};\n",
|
||
"\n",
|
||
"//利用全局函数判断,两个立方体是否相等\n",
|
||
"bool isSame(Cube c1, Cube c2) //值传递会拷贝一份数据,通过引用传递用原始数据,不会拷贝数据\n",
|
||
"{\n",
|
||
" if (c1.getL() == c2.getL() && c1.getW() == c2.getW()\n",
|
||
" && c1.getH() == c2.getH())\n",
|
||
" {\n",
|
||
" return true;\n",
|
||
" }\n",
|
||
" else\n",
|
||
" {\n",
|
||
" return false;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"int main()\n",
|
||
"{\n",
|
||
" //创建立方体对象\n",
|
||
" Cube c1;\n",
|
||
" c1.setL(10);\n",
|
||
" c1.setW(10);\n",
|
||
" c1.setH(10);\n",
|
||
"\n",
|
||
" cout << \"c1的面积为:\" << c1.calculateS() << endl; \n",
|
||
" cout << \"c1的体积为:\" << c1.calculateV() << endl; \n",
|
||
"\n",
|
||
" Cube c2;\n",
|
||
" c2.setL(10);\n",
|
||
" c2.setW(10);\n",
|
||
" c2.setH(11);\n",
|
||
"\n",
|
||
" bool ret = isSame(c1, c2);\n",
|
||
" if (ret)\n",
|
||
" {\n",
|
||
" cout << \"利用全局函数判断:c1和c2是相等的\" << endl;\n",
|
||
" }\n",
|
||
" else\n",
|
||
" {\n",
|
||
" cout << \"利用全局函数判断:c1和c2是不相等的\" << endl;\n",
|
||
" }\n",
|
||
"\n",
|
||
"\n",
|
||
" //利用成员函数判断\n",
|
||
" ret = c1.isSameByClass(c2);\n",
|
||
" if (ret)\n",
|
||
" {\n",
|
||
" cout << \"利用成员函数判断:c1和c2是相等的\" << endl;\n",
|
||
" }\n",
|
||
" else\n",
|
||
" {\n",
|
||
" cout << \"利用成员函数判断:c1和c2是不相等的\" << endl;\n",
|
||
" }\n",
|
||
"\n",
|
||
" system(\"pause\");\n",
|
||
"\n",
|
||
" return 0;\n",
|
||
"\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"运行结果: \n",
|
||
" - c1的面积为:600 \n",
|
||
" - c1的体积为:1000 \n",
|
||
" - 利用全局函数判断:c1和c2是不相等的 \n",
|
||
" - 利用成员函数判断:c1和c2是不相等的 \n",
|
||
" - 请按任意键继续. . ."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3.6.3",
|
||
"language": "python",
|
||
"name": "python3.6.3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.6.3"
|
||
},
|
||
"toc": {
|
||
"base_numbering": 1,
|
||
"nav_menu": {},
|
||
"number_sections": false,
|
||
"sideBar": true,
|
||
"skip_h1_title": false,
|
||
"title_cell": "Table of Contents",
|
||
"title_sidebar": "Contents",
|
||
"toc_cell": false,
|
||
"toc_position": {},
|
||
"toc_section_display": true,
|
||
"toc_window_display": true
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|