【发布时间】:2017-09-23 10:56:13
【问题描述】:
我已经浏览了 Python 文档中__getitem__ 的大部分文档,但我仍然无法理解它的含义。
所以我只能理解__getitem__ 用于实现像self[key] 这样的调用。但是它有什么用呢?
假设我有一个以这种方式定义的 python 类:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __getitem__(self,key):
print ("Inside `__getitem__` method!")
return getattr(self,key)
p = Person("Subhayan",32)
print (p["age"])
这会按预期返回结果。但是为什么首先使用__getitem__?我还听说 Python 在内部调用 __getitem__。但是为什么会这样呢?
有人可以详细解释一下吗?
【问题讨论】:
-
在您的示例中使用
__getitem__没有多大意义,但假设您需要编写一个自定义列表或字典类,它必须与现有代码一起使用使用[]。这就是__getitem__有用的情况。 -
在我看来,主要用例是当您编写一个表示事物集合的自定义类时。这允许您使用熟悉的列表/数组索引(如
planets[i])来访问给定项目,即使planets实际上不是列表(并且它可以在幕后使用它选择的任何数据结构,例如链接的列表或图形,或实现它选择的任何非列表函数,列表不能)。
标签: python