news 2026/5/3 13:55:35

Python 3.12 OOP - 01 - Overview

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 3.12 OOP - 01 - Overview

Python 3.12 OOP - Overview


第一章:面向对象编程基础

1.1 类与对象的基本概念
1.2 属性与方法
1.3 构造函数__init__与析构函数__del__
1.4 实例属性与类属性
1.5 方法的类型:实例方法、类方法、静态方法
1.6 访问控制与名称修饰(Name Mangling)

第二章:继承与多态

2.1 单继承与多重继承
2.2 方法重写(Override)与super()
2.3 方法解析顺序(MRO)
2.4 抽象基类(ABC)与abc模块
2.5 鸭子类型与协议(Protocols)

第三章:特殊方法(魔术方法)与运算符重载

3.1 对象创建与销毁:__new____init____del__
3.2 字符串表示:__str____repr____format__
3.3 容器模拟:__len____getitem____setitem____delitem____contains__
3.4 属性访问控制:__getattr____setattr____delattr____getattribute__
3.5 可调用对象:__call__
3.6 比较运算符:__eq____lt____le____gt____ge____ne__
3.7 算术运算符:__add____sub____mul____truediv__等及其反向、增量版本
3.8 类型转换:__int____float____bool____bytes____complex____index__
3.9 上下文管理器:__enter____exit__
3.10 可迭代与迭代器:__iter____next__
3.11 描述符协议:__get____set____delete____set_name__
3.12 其他特殊方法:__hash____dir____slots__

第四章:描述符(Descriptor)

4.1 描述符协议详解
4.2 数据描述符与非数据描述符
4.3 内置描述符:propertystaticmethodclassmethod
4.4 自定义描述符与应用(类型检查、惰性计算)
4.5 描述符与__slots__的协同

第五章:元类(Metaclass)

5.1 什么是元类?类也是对象
5.2type元类与动态创建类
5.3 自定义元类:__new____init____call__
5.4 元类与类装饰器的对比
5.5 常见元类应用:单例、注册子类、ORM 框架

第六章:数据类(dataclasses

6.1 为什么需要数据类?
6.2@dataclass装饰器与参数详解
6.3 字段(Field)的配置:defaultdefault_factoryinitrepr
6.4 继承与数据类
6.5 数据类与不可变性(frozen=True

第七章:枚举(enum

7.1 枚举的基本使用
7.2 自动值与auto()
7.3 枚举的成员与迭代
7.4 功能性扩展与Enum的高级用法

第八章:协议(Protocols)与类型化的鸭子类型

8.1 静态鸭子类型与typing.Protocol
8.2 运行时协议实现
8.3 与抽象基类的区别

第九章:面向对象设计模式与 Python 实践

9.1 单例模式(多种实现)
9.2 工厂模式(简单工厂、工厂方法、抽象工厂)
9.3 观察者模式
9.4 策略模式
9.5 装饰器模式(与语言装饰器的区别)

第十章:Python 3.12 中面向对象的新特性(与 3.11 对比)

10.1 模式匹配(match/case)与对象解构
10.2 泛型类型别名(type语句)
10.3 更友好的错误信息与调试支持
10.4 性能优化在面向对象层面的体现


第一章:面向对象编程基础

1.1 类与对象的基本概念

面向对象编程(OOP)是一种程序设计范式,它将数据和操作数据的方法封装在一起,形成“对象”。在 Python 中,一切皆对象:整数、字符串、列表甚至函数都是对象。类(class)是创建对象的蓝图,定义了一组属性和方法;对象(object)是类的实例。

定义类

classDog:pass

创建对象

my_dog=Dog()

类使用class关键字定义,通常遵循首字母大写的命名惯例。

1.2 属性与方法

属性是对象的数据,方法是对象可以执行的操作。

classDog:def__init__(self,name,age):self.name=name# 实例属性self.age=agedefbark(self):# 实例方法print(f"{self.name}says Woof!")d=Dog("Buddy",3)d.bark()# Buddy says Woof!

1.3 构造函数__init__与析构函数__del__

__init__是初始化方法,在对象创建后立即调用,用于设置初始状态。__del__是析构方法,在对象被垃圾回收前调用,用于清理资源,但由于调用时机不确定,不推荐依赖它。

classFileHandler:def__init__(self,filename):self.file=open(filename,'r')def__del__(self):self.file.close()

更推荐使用上下文管理器(with)进行资源管理。

1.4 实例属性与类属性

  • 实例属性:通过self绑定,每个实例独立。
  • 类属性:直接在类体中定义,所有实例共享。
classStudent:school="MIT"# 类属性def__init__(self,name):self.name=name# 实例属性s1=Student("Alice")s2=Student("Bob")print(s1.school)# MITStudent.school="Harvard"print(s2.school)# Harvard

1.5 方法的类型:实例方法、类方法、静态方法

  • 实例方法:第一个参数self,绑定到实例。
  • 类方法:使用@classmethod,第一个参数cls,绑定到类。
  • 静态方法:使用@staticmethod,没有特殊参数,本质是普通函数。
classCalculator:@classmethoddefunit(cls):returncls.__name__@staticmethoddefadd(a,b):returna+b

1.6 访问控制与名称修饰

Python 没有严格的私有成员,但约定使用单下划线_表示“保护”,双下划线__触发名称修饰(name mangling),避免子类意外覆盖。

classMyClass:def__init__(self):self._protected=1# 保护成员(约定)self.__private=2# 名称修饰为 _MyClass__privateobj=MyClass()print(obj._protected)# 仍可访问# print(obj.__private) # AttributeErrorprint(obj._MyClass__private)# 2

名称修饰主要用于避免继承时的方法名冲突,并不提供真正的安全性。 接下来,会继续介绍面向对象的继承与多态。

如果在学习过程中遇到问题,欢迎在评论区留言讨论!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 13:53:50

使用 Taotoken 聚合端点快速接入 Claude Code 提升编程效率

使用 Taotoken 聚合端点快速接入 Claude Code 提升编程效率 1. Claude Code 开发者的痛点与解决方案 在日常编程工作中,许多开发者依赖 Claude Code 进行代码补全、错误检测和智能重构。然而,直接使用单一模型服务常面临两个主要问题:模型切…

作者头像 李华
网站建设 2026/5/3 13:53:44

在 Taotoken 控制台中快速查询历史调用记录与账单明细

在 Taotoken 控制台中快速查询历史调用记录与账单明细 1. 登录控制台并进入用量看板 访问 Taotoken 控制台后,使用您的账号登录。登录成功后,在左侧导航栏中找到「用量看板」选项并点击进入。该页面默认展示最近7天的调用概览,包括总请求数…

作者头像 李华
网站建设 2026/5/3 13:44:56

Tinke:终极免费的NDS游戏资源提取与修改工具完整指南

Tinke:终极免费的NDS游戏资源提取与修改工具完整指南 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke 想要轻松提取和修改任天堂NDS游戏资源吗?Tinke正是你需要的专业工具&…

作者头像 李华
网站建设 2026/5/3 13:44:32

实用干货!OpenClaw 中文适配完整配置

前言 OpenClaw(小龙虾)是 2026 年关注度较高的本地 AI 自动化工具,支持离线使用,不需要云端账号,通过自然语言指令就能让 AI 自动处理电脑各类重复操作,有效提升电脑使用效率。本文带来 Windows 11 平台完…

作者头像 李华