Skip to content

19 类和对象 (Classes and Objects)

学习目标

掌握面向对象编程的基本概念和Python类的定义,学会设计和实现完整的类结构。

主要内容

  • 面向对象编程的基本概念
  • 类的定义和实例化
  • 实例属性和类属性
  • 实例方法、类方法和静态方法
  • 构造方法__init__和析构方法__del__
  • 属性访问控制:公有、私有、保护
  • self参数的理解
  • 对象的内存管理
  • 继承和多态的基础应用

文件说明

01_defining_classes.py - 类的定义基础

学习内容:

  • 类的基本语法和定义
  • 类的命名规范
  • 简单类的创建和使用
  • 类和对象的概念区别

重点知识点:

  • class 关键字的使用
  • 类名的命名规范(PascalCase)
  • 类的基本结构
  • 对象的创建和使用

02_creating_objects.py - 对象的创建和实例化

学习内容:

  • 对象的实例化过程
  • 多个对象的创建和管理
  • 对象的独立性
  • 对象的内存分配

重点知识点:

  • 实例化的概念和过程
  • 对象的唯一性
  • 内存中的对象存储
  • 对象引用和赋值

03_instance_methods.py - 实例方法的定义和使用

学习内容:

  • 实例方法的定义和调用
  • self参数的理解和使用
  • 方法的参数传递
  • 方法的返回值
  • 方法链式调用
  • 私有方法和公有方法

重点知识点:

  • self 参数的作用
  • 实例方法的调用机制
  • 方法的封装性
  • 特殊方法(魔术方法)

04_instance_attributes.py - 实例属性的操作

学习内容:

  • 实例属性的创建和访问
  • 属性的动态添加和删除
  • 属性的类型验证
  • property装饰器的使用
  • 描述符的基础应用

重点知识点:

  • 实例属性 vs 类属性
  • 属性的getter和setter
  • @property 装饰器
  • 属性验证和控制

05_constructor_method.py - 构造方法__init__

学习内容:

  • 构造方法的定义和使用
  • 初始化参数的处理
  • 默认参数和可变参数
  • 构造方法中的验证和异常处理
  • 继承中的构造方法调用

重点知识点:

  • __init__ 方法的作用
  • 对象初始化过程
  • 参数验证和异常处理
  • 类方法作为替代构造器

06_private_attributes.py - 私有属性和访问控制

学习内容:

  • Python中的访问控制机制
  • 私有属性的实现(名称修饰)
  • getter和setter方法
  • property装饰器的高级使用
  • 访问控制的最佳实践

重点知识点:

  • 单下划线和双下划线的区别
  • 名称修饰(Name Mangling)
  • 封装的概念和实现
  • 访问控制的设计原则

07_class_attributes.py - 类属性和类方法

学习内容:

  • 类属性的定义和使用
  • 类属性与实例属性的区别
  • 类方法和静态方法
  • 类方法的装饰器使用
  • 类属性的继承和重写

重点知识点:

  • @classmethod@staticmethod 装饰器
  • 类属性的共享性
  • 类方法的应用场景
  • 静态方法的使用时机

08_exercises.py - 综合练习

学习内容:

  • 银行账户管理系统
  • 学生成绩管理系统
  • 图书馆管理系统
  • 员工管理系统
  • 完整的面向对象设计实践

重点知识点:

  • 复杂类的设计和实现
  • 类之间的关系和交互
  • 继承和多态的应用
  • 实际业务逻辑的面向对象建模

学习路径

第一阶段:基础概念(1-2天)

  1. 学习 类的定义基础 - 理解类和对象的基本概念
  2. 学习 对象的创建和实例化 - 掌握对象的创建和实例化
  3. 完成基础练习,创建简单的类

第二阶段:方法和属性(2-3天)

  1. 学习 实例方法的定义和使用 - 掌握实例方法的使用
  2. 学习 实例属性的操作 - 理解属性的操作和管理
  3. 学习 构造方法__init__ - 掌握构造方法的使用
  4. 练习设计包含方法和属性的类

第三阶段:高级特性(2-3天)

  1. 学习 私有属性和访问控制 - 掌握访问控制机制
  2. 学习 类属性和类方法 - 理解类属性和类方法
  3. 练习设计更复杂的类结构

第四阶段:综合应用(3-4天)

  1. 学习 综合练习 - 完成综合练习项目
  2. 独立设计和实现完整的类系统
  3. 总结面向对象编程的设计原则

练习要点

基础练习

  1. 理解类和对象的关系

    • 类是对象的模板
    • 对象是类的实例
    • 一个类可以创建多个对象
  2. 掌握类的定义和实例化

    • 使用 class 关键字定义类
    • 使用类名()创建对象
    • 理解实例化过程
  3. 学会使用不同类型的方法

    • 实例方法:操作实例数据
    • 类方法:操作类数据
    • 静态方法:独立的工具函数

进阶练习

  1. 理解属性访问控制机制

    • 公有属性:可以自由访问
    • 私有属性:使用双下划线前缀
    • 保护属性:使用单下划线前缀
  2. 练习设计简单的类结构

    • 确定类的职责和功能
    • 设计合理的属性和方法
    • 考虑封装性和可扩展性

高级练习

  1. 掌握继承和多态

    • 理解继承的概念和语法
    • 学会方法重写
    • 理解多态的实现
  2. 学会异常处理

    • 在方法中添加参数验证
    • 抛出和处理自定义异常
    • 保证程序的健壮性
  3. 实践设计模式

    • 单例模式
    • 工厂模式
    • 观察者模式

使用方法

环境要求

  • Python 3.6+
  • 支持面向对象编程的IDE或文本编辑器

运行所有示例

bash
# 进入目录
cd 19-classes-objects

# 按顺序运行所有文件
python3 01_defining_classes.py
python3 02_creating_objects.py
python3 03_instance_methods.py
python3 04_instance_attributes.py
python3 05_constructor_method.py
python3 06_private_attributes.py
python3 07_class_attributes.py
python3 08_exercises.py

学习建议

  1. 循序渐进:按照文件编号顺序学习,每个概念都建立在前面的基础上

  2. 动手实践:不要只看代码,要亲自运行和修改

  3. 理解概念:重点理解面向对象的核心概念:封装、继承、多态

  4. 设计思维:学会从面向对象的角度分析和设计问题

  5. 代码规范:遵循Python的命名规范和编码风格

  6. 调试技巧:学会使用调试工具查看对象的状态

  7. 扩展练习:尝试修改示例代码,添加新功能

  8. 项目实践:完成综合练习后,尝试设计自己的项目

常见问题

Q: 什么时候使用类方法,什么时候使用静态方法?

A:

  • 类方法:需要访问类属性或创建类实例时使用
  • 静态方法:功能独立,不需要访问类或实例数据时使用

Q: 如何选择使用私有属性还是公有属性?

A:

  • 内部实现细节使用私有属性
  • 需要外部访问的数据使用公有属性
  • 需要控制访问的属性使用property装饰器

Q: 继承什么时候使用?

A:

  • 存在"是一个"关系时使用继承
  • 需要扩展现有类的功能时
  • 多个类有共同特征时

下一步学习

完成本模块后,建议继续学习:

  • 20-inheritance-polymorphism - 继承和多态
  • 21-special-methods - 特殊方法和运算符重载
  • 22-design-patterns - 设计模式
  • 23-advanced-oop - 高级面向对象编程

参考资料

Released under the MIT License.