Ceng-0324/conquer-python

advanced python tutorial

★ 0Forks 0PythonGitHub ↗Compare

README

Object-Oriented Programming Template

这是一个从 0 到 1 学习 Python 面向对象编程与软件工程实践的学习仓库。内容覆盖面向对象基础、进阶语法、常见数据结构与算法、设计模式、软件测试、OOA/UML、Git 版本控制和小型综合项目。每个章节都尽量保持三个目标:概念讲清楚、代码能运行、例子能迁移到真实项目里。

目录结构

OOP/
├── oop_basics/            # 面向对象基础:类、对象、封装、继承、多态、组合等
├── advanced_oop/          # 进阶主题:dataclass、协议、描述符、装饰器、mixin 等
├── data_structures/       # 用 OOP 实现常见数据结构
├── algorithms/            # 搜索、排序、递归、动态规划、图算法
├── design_patterns/       # 创建型、结构型、行为型设计模式
├── software_engineering/   # 软件测试、OOA/UML、Git 版本控制
├── projects/              # 综合练习项目
├── scripts/               # 辅助脚本
└── tests/                 # 单元测试

快速开始

本仓库只使用 Python 标准库,不需要额外安装依赖。建议使用 Python 3.10 或更高版本。

cd /Users/jaxson/OOP
python3 scripts/run_examples.py
python3 -m unittest discover -s tests

如果只想运行某个文件,可以直接执行:

python3 oop_basics/01_classes_and_objects.py
python3 design_patterns/behavioral/strategy.py

学习路线

  1. 先看 oop_basics/,建立类、对象、方法、属性、封装、继承、多态的直觉。
  2. 再看 advanced_oop/,理解 Python 中更“动态”的对象模型能力。
  3. 用 data_structures/ 和 algorithms/ 把 OOP 用在可复用的数据建模与算法实现上。
  4. 通过 design_patterns/ 学习常见协作结构,重点理解“为什么这么组织代码”。
  5. 学习 software_engineering/,把 OOP 放进测试、建模和版本控制流程里。
  6. 最后看 projects/,把多个知识点组合成接近业务场景的小程序。

核心主题

  • 类与对象:状态、行为、实例属性、类属性
  • 封装:私有约定、属性校验、property
  • 继承与多态:抽象基类、接口式设计、方法重写
  • 组合优先:用对象协作代替过深继承
  • Python 数据模型:魔术方法、迭代协议、上下文管理器
  • 类型建模:dataclass、Protocol、泛型
  • 设计模式:Factory、Builder、Adapter、Decorator、Strategy、Observer、Command
  • 数据结构:链表、栈、队列、二叉搜索树、图
  • 算法:二分搜索、排序、动态规划、BFS、DFS、Dijkstra
  • 软件工程:测试目的、测试层级、OOA、UML 图、Git 分支与协作

代码风格约定

  • 示例优先使用标准库,保持文件可独立运行。
  • 每个示例文件都有 if __name__ == "__main__" 演示入口。
  • 重点示例配套单元测试,方便验证行为。
  • 中文 README 讲思路,Python 文件保留简洁英文命名。

推荐练习方式

读每个章节时,不要只看代码。建议按下面的节奏练:

  1. 先运行示例,观察输出。
  2. 改一个输入或新增一个类,看看行为如何变化。
  3. 给已有类补一个方法,并写一个小测试。
  4. 尝试把示例里的类迁移到一个新场景,例如图书、订单、任务、游戏角色等。

这个仓库不是为了背概念,而是为了把“对象如何协作”这件事练到手上。

Contributors

Ceng-0324

Issues