Python 中的 __getitem__()

2025年3月17日 | 阅读 3 分钟

在 Python 中,有很多用于特定目的的函数,它们的函数名前后都有双下划线。它们被称为魔术函数或 dunder 方法。

例如: __abs__ , __contains__ 等。

魔术方法的示例如下:

__str__() 函数

此函数用于返回可打印的字符串。

__add__() 函数

此函数用于相加两个对象或属性。

_ge__() 函数

此函数用于重载大于或等于运算符(>=)。

__floor__() 函数

此函数由 Math.floor() 函数在内部调用。

__ceil__() 函数

此函数由 Math.ceil() 函数在内部调用。

__trunc__() 函数

此函数由 Math.trunc() 函数在内部调用。

__init__() 函数

这是任何类的构造函数,它由 __new__() 函数调用。

__getitem__() 方法

__getitem__() 也是 Python 中的一个魔术方法,它在类中使用,并允许类的任何实例使用索引器运算符。

语法

因此,它用于通过类的任何对象或实例来评估 self[key] 的值。假设我们有一个对象 obj,那么 obj[key] 将等同于 obj.__getitem(key)。

我们将通过一些示例来理解 __getitem__() 函数。

示例 1

输出

__getitem__() in Python

说明

在上面的代码中,我们有一个名为 JavatPoint 的自定义类。在此类中,我们有自己的 __getitem__() 函数定义,我们在其中打印一些带有键的语句。

然后我们创建了它的实例 myObj,然后我们将数字 6000 作为键传递。它将打印语句和键的值。然后在下一行,我们使用索引器将字符串作为键,这将相应地打印语句。

示例 2

输出

__getitem__() in Python

说明

在上面的代码中,我们有一个名为 JavatPoint 的类,其中我们定义了四个函数。在 init 函数中,我们接受了一个列表。然后我们创建了一个具有四个字符串值的列表的类实例。

在第一个语句中,我们打印了第一个索引处的值,因此它将打印 __getitem__() 函数的值和语句。然后我们将值从字符串更改为整数,并再次调用索引器,它再次打印。

然后我们使用 __delitem__() 函数删除了列表的第一个索引值。因此,第二个索引处的值将向左移,并作为第一个索引打印。

示例 3

输出

__getitem__() in Python

说明

在上面的代码中,我们有一个名为 Javatpoint 的类,它接受一个对象,并且它有一个 __getitem__ () 函数,我们在其中传递一个键或项,并且在此函数中,我们打印键的类型和键的值。然后我们创建了 Javatpoint 类的对象或实例 test,并通过索引器([ ])将不同类型的键传递给 test。

在第一个示例中,我们传递了值 69,因此它打印了数据类型为“int”及其值。

第二个示例是类型切片对象,因此它被打印为类 slice。

第三个示例是一个语句,其数据类型为 str 或 string。

第四个示例是类型 tuple,第五个示例是类型 slice。

最后一个示例是类型 object,因此它打印对象的值或地址。