网站制作哪个好一些电商营销策略方案
文章目录
- 前言
- 一、什么是 `__getitem__` 和 `__len__`?
- 二、`__getitem__`:索引访问的魔法
- 2.1 基本用法
- 2.2 灵活应用
- 三、`__len__`:长度查询的钥匙
- 3.1 基本用法
- 3.2 在 Vocab 中的应用
- 四、 结合使用:打造完整序列
- 五、为什么需要 `__getitem__` 和 `__len__`?
- 六、 实际应用场景
- 总结
前言
Python 的魅力之一在于它的灵活性:内置类型如列表、字典和元组让我们轻松处理数据,而当这些类型不够用时,我们还能打造自己的“定制容器”。在“Python 解码”系列的第三篇中,我们将聚焦两个魔法方法——__getitem__ 和 __len__,它们是自定义序列类型的核心钥匙。
想让你的类支持索引访问(如 obj[0])?想让 len() 函数返回对象的长度? __getitem__ 和 __len__ 正是实现这些功能的秘密武器。通过本文,你将学会如何用它们解锁 Python 数据模型的潜能,打造属于自己的序列类型。让我们一起开启这场探索吧!
一、什么是 __getitem__ 和 __len__?
在 Python 中,__getitem__ 和 __len__ 是特殊方法(也叫“魔法方法”或“dunder 方法”),属于 Python 数据模型的一部分。它们让自定义对象能够模仿内置序列类型(如列表或元组)的行为:
__getitem__:定义对象在被索引或键访问(obj[key])时的行为。__len__:定义对象在调用len()函数时的行为,返回长度。
这两个方法简单却强大,结合起来可以让你的类表现得像一个完整的序列,支持索引、长度查询,甚至迭代。接下来,我们逐一解码它们的用法。
二、__getitem__:索引访问的魔法
__getitem__ 是自定义对象支持 [] 操作的关键。当你写下 obj[key] 时,Python 会自动调用 obj.__getitem__(key)。这里的 key 可以是整数(索引)、切片(slice),甚至是其他类型(例如字典的键)。
2.1 基本用法
让我们创建一个简单的类 MyList,模拟列表的索引行为:
class MyList:def __init__(self, data):self.data = datadef __getitem__(self, index):return self.data[index]# 使用示例
ml = MyList([1, 2, 3, 4])
print(ml[0]) # 输出: 1
print(ml[1:3]) 