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天)
第二阶段:方法和属性(2-3天)
- 学习 实例方法的定义和使用 - 掌握实例方法的使用
- 学习 实例属性的操作 - 理解属性的操作和管理
- 学习 构造方法__init__ - 掌握构造方法的使用
- 练习设计包含方法和属性的类
第三阶段:高级特性(2-3天)
第四阶段:综合应用(3-4天)
- 学习 综合练习 - 完成综合练习项目
- 独立设计和实现完整的类系统
- 总结面向对象编程的设计原则
练习要点
基础练习
理解类和对象的关系
- 类是对象的模板
- 对象是类的实例
- 一个类可以创建多个对象
掌握类的定义和实例化
- 使用
class
关键字定义类 - 使用类名()创建对象
- 理解实例化过程
- 使用
学会使用不同类型的方法
- 实例方法:操作实例数据
- 类方法:操作类数据
- 静态方法:独立的工具函数
进阶练习
理解属性访问控制机制
- 公有属性:可以自由访问
- 私有属性:使用双下划线前缀
- 保护属性:使用单下划线前缀
练习设计简单的类结构
- 确定类的职责和功能
- 设计合理的属性和方法
- 考虑封装性和可扩展性
高级练习
掌握继承和多态
- 理解继承的概念和语法
- 学会方法重写
- 理解多态的实现
学会异常处理
- 在方法中添加参数验证
- 抛出和处理自定义异常
- 保证程序的健壮性
实践设计模式
- 单例模式
- 工厂模式
- 观察者模式
使用方法
环境要求
- 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
学习建议
循序渐进:按照文件编号顺序学习,每个概念都建立在前面的基础上
动手实践:不要只看代码,要亲自运行和修改
理解概念:重点理解面向对象的核心概念:封装、继承、多态
设计思维:学会从面向对象的角度分析和设计问题
代码规范:遵循Python的命名规范和编码风格
调试技巧:学会使用调试工具查看对象的状态
扩展练习:尝试修改示例代码,添加新功能
项目实践:完成综合练习后,尝试设计自己的项目
常见问题
Q: 什么时候使用类方法,什么时候使用静态方法?
A:
- 类方法:需要访问类属性或创建类实例时使用
- 静态方法:功能独立,不需要访问类或实例数据时使用
Q: 如何选择使用私有属性还是公有属性?
A:
- 内部实现细节使用私有属性
- 需要外部访问的数据使用公有属性
- 需要控制访问的属性使用property装饰器
Q: 继承什么时候使用?
A:
- 存在"是一个"关系时使用继承
- 需要扩展现有类的功能时
- 多个类有共同特征时
下一步学习
完成本模块后,建议继续学习:
- 20-inheritance-polymorphism - 继承和多态
- 21-special-methods - 特殊方法和运算符重载
- 22-design-patterns - 设计模式
- 23-advanced-oop - 高级面向对象编程