欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 解码 __getitem__ 和 __len__ - 自定义序列的钥匙

解码 __getitem__ 和 __len__ - 自定义序列的钥匙

2025/4/3 11:39:18 来源:https://blog.csdn.net/weixin_43887510/article/details/146963997  浏览:    关键词:解码 __getitem__ 和 __len__ - 自定义序列的钥匙

文章目录

  • 前言
  • 一、什么是 `__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]) 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词