字典 与 Python 对象 的总结
一、本质(最核心)
1. 字典(dict)
字典是 Python 自带的一种"数据结构"
用来存 key: value 键值对。
它长得有标志性:
python
{ "key": value }
2. 对象(Object)
Python 里一切皆对象!
数字、字符串、函数、类实例、SimpleNamespace......全都是对象。
比如:
能使用 .属性 的对象
python
obj.name
obj.raw_text
二、字典(dict)总结
1. 长什么样
python
{
"name": "小明",
"age": 20,
"raw_text": "文本内容"
}
标志性符号:大括号 {}
2. 创建方式(全部)
① 字面量(最常用)
python
d = {"name": "小明"}
② 空字典,后赋值
python
d = {}
d["name"] = "小明"
③ dict() 函数
python
d = dict(name="小明")
④ 可迭代对象创建
python
d = dict([("name", "小明")])
3. 取值 / 赋值
必须用:方括号 ["key"]
python
d["raw_text"] # 取值
d["raw_text"] = 新值 # 赋值
4. 绝对不能做
python
d.raw_text # ❌ 报错:字典没有 . 属性
5. 特点
- 属于数据容器
- 用来存结构化数据
- key 必须是不可变类型(字符串、数字等)
- 只能用 \[\] 访问
三、对象(Object)总结
1. 什么是对象
Python 中所有东西都是对象
字典也是Python对象~
2. 能使用 .属性 的对象有哪些
① 类创建的对象(最标准)
python
class Person:
pass
p = Person()
p.name = "小明"
p.raw_text = "文本"
② 带构造函数的类对象
python
class Person:
def __init__(self, name):
self.name = name
p = Person("小明")
③ SimpleNamespace 对象(官方简易对象)
python
from types import SimpleNamespace
p = SimpleNamespace(name="小明")
④ 模块、函数、字符串、列表......全是对象
只是它们不一定能随便加 .属性
3. 对象取值 / 赋值
必须用:点 .
python
obj.raw_text # 取值
obj.raw_text = 新值 # 赋值
4. 绝对不能做
python
obj["raw_text"] # ❌ 报错:对象不能用 []
5. 对象的本质
- 是实例
- 拥有 属性 + 方法
- 用
.访问成员 - 不是数据结构,是"实例"
四、字典 VS 对象 对比表
| 项目 | 字典 dict | 对象 Object |
|---|---|---|
| 外观符号 | 大括号 {} |
无括号 |
| 访问方式 | dict["key"] |
obj.key |
| 创建方式 | {}, dict() |
类实例、SimpleNamespace |
| 是否需要导入 | 不需要,Python 原生 | 类要定义,SimpleNamespace 需要导入 |
| 内部结构 | key-value 映射表 | 属性存储在 dict 中 |
| 错误访问方式 | dict.key → AttributeError |
obj["key"] → TypeError |
| 本质 | 数据结构,用于存储数据 | 类的实例,表示一个"东西/实体" |
| 灵活性 | key 可随时增删 | 属性可动态增加(大部分对象) |
| 你之前的报错 | 把字典当对象用 → 报错 | 无 |