图片作者
Python 是一门神奇的语言,有许多概念即使是高级用户也可能不熟悉。 Dunder 或魔法方法就是其中之一。 魔术方法是用双下划线括起来的特殊方法。 与 python 中的普通方法不同,它们不会被显式调用。 一种这样的魔术方法是 __getitem__
方法,使 Python 对象的行为类似于序列或容器,例如列表、字典和元组。 它获取索引或切片并从集合中检索其关联值。 每当我们使用 indexer [ ]
运算符访问对象中的元素。
将此方法想象成一根魔杖,它使您只需编写几行代码即可提取所需信息。 有趣吧? 这种方法在数据分析和机器学习中也有广泛的应用。 那么,让我们更深入地探讨 __getitem__
方法并发现它的力量和灵活性。
我想让你明白,作为 Python 程序员,你的职责不仅仅是编写功能代码。 您的代码应该高效、可读且可维护。 使用 __getitem__
将帮助您实现这些目标。 以下是使用这种神奇方法的其他一些好处:
- 通过允许您仅提取基本信息而不是将完整的数据结构加载到内存中来减少内存使用
- 在如何处理和操作数据方面提供更大的灵活性
- 允许您迭代集合而不循环遍历数据
- 通过允许您编写内置类型可能无法实现的高级索引来增强功能
- 简化代码,因为它使用熟悉的符号
的语法 __getitem__
方法如下:
def __getitem__(self, index): # Your Implementation pass
它定义函数的行为,并在其参数中获取您尝试访问的索引。 我们可以像这样使用这个方法:
my_obj[index]
这转化为声明 my_obj.__getitem__(index)
在引擎盖下。 现在您可能会认为它与内置的有何不同 indexer []
操作员? 无论你在哪里使用这个符号,python 都会自动调用 __getitem__
方法,是访问元素的简写。 但是如果你想改变自定义对象的索引行为,你需要显式调用 __getitem__
方法。
例如#01
让我们先从一个简单的例子开始。 我们将创建一个 Student 类,其中包含所有学生的列表,我们可以通过索引访问他们,并认为该索引代表他们唯一的学生 ID。
class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])
输出:
现在我们将转到一个高级示例,我们将使用 __getitem__
方法。 假设我有一个字符串元素列表,我想在每次输入它的索引位置时检索该元素,如果我输入字符串本身,我也可以获得索引位置。
class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green'])
输出:
red
green
0 2
此方法对于快速查找实例属性非常有用。 考虑到这种方法的灵活性和通用性,我认为这是 Python 最未被充分利用的魔术方法之一。 我希望你喜欢阅读这篇文章,如果你有兴趣了解 Python 中的其他魔术方法,请在评论部分告诉我。
坎瓦尔·梅林 是一位有抱负的软件开发人员,对数据科学和人工智能在医学中的应用有着浓厚的兴趣。 Kanwal 被选为 2022 年亚太地区 Google Generation Scholar。 Kanwal 喜欢通过撰写有关热门话题的文章来分享技术知识,并且热衷于提高女性在科技行业的代表性。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://www.kdnuggets.com/2023/03/introduction-getitem-magic-method-python.html?utm_source=rss&utm_medium=rss&utm_campaign=introduction-to-__getitem__-a-magic-method-in-python
- :是
- 2022
- 8
- a
- 关于
- ACCESS
- 访问
- 高级
- AI
- 医学中的AI
- 所有类型
- 允许
- 分析
- 和
- 亚太地区
- 应用领域
- 保健
- 论点
- 刊文
- 刊文
- AS
- 有志
- 相关
- 属性
- 自动
- BE
- 好处
- 黑色
- 蓝色
- 内建的
- by
- 呼叫
- 被称为
- 呼叫
- CAN
- 更改
- 程
- 码
- 采集
- 评论
- 完成
- 概念
- 考虑
- 考虑
- 集装箱
- 创建信息图
- 习俗
- data
- 数据分析
- 数据科学
- David
- 更深
- 定义
- 开发商
- 不同
- 通过各种方式找到
- 翻番
- e
- 易
- 高效
- element
- 分子
- 使
- 输入
- 必要
- 甚至
- 例子
- 提取
- 非常
- 熟悉
- 少数
- 姓氏:
- 高度灵活
- 如下
- 针对
- 止
- 功能
- 实用
- 功能
- 代
- 得到
- 理想中
- 谷歌
- 补助金
- 更大的
- 绿色
- 处理
- 有
- 帮助
- 点击此处
- 兜帽
- 抱有希望
- 创新中心
- HTTPS
- i
- ID
- 履行
- 改善
- in
- 指数
- 行业中的应用:
- 信息
- 例
- 代替
- 兴趣
- 有兴趣
- 有趣
- 介绍
- IT
- 项目
- 它的
- 本身
- 掘金队
- 敏锐
- 键
- 知道
- 知识
- 语言
- 学习
- 喜欢
- 线
- 清单
- 书单
- 装载
- 查找
- 机
- 机器学习
- 魔法
- 可维护的
- 操纵
- 许多
- 药物
- 内存
- 方法
- 方法
- 可能
- 更多
- 最先进的
- 移动
- 名称
- 需求
- 对象
- 对象
- of
- on
- 一
- 操作者
- 普通
- 其他名称
- 参数
- 多情
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 位置
- 可能
- 功率
- 程序员
- 蟒蛇
- 快速
- 提高
- 阅读
- 红色
- 地区
- 表示
- 代表
- 必须
- 回报
- s
- 科学
- 部分
- 选
- 自
- Share
- 速记
- 应该
- 切片
- So
- 软件
- 一些
- 特别
- 开始
- 个人陈述
- 结构体
- 学生
- 学生
- 这样
- 包围
- 句法
- 需要
- 科技
- 科技产业
- 文案
- 这
- 其
- 他们
- 博曼
- 认为
- 至
- Topics
- 趋势
- 类型
- 下
- 理解
- 独特
- us
- 用法
- 使用
- 用户
- 折扣值
- 魔杖
- 广泛
- 将
- 中
- 也完全不需要
- 女性
- 科技界的女性
- 将
- 写
- 写作
- 您一站式解决方案
- 和风网