在 Python 中实现类似列表的索引访问
Posted
技术标签:
【中文标题】在 Python 中实现类似列表的索引访问【英文标题】:Implement list-like index access in Python 【发布时间】:2011-09-23 02:29:42 【问题描述】:我希望能够使用类似数组的语法访问 python 对象的一些值,即:
obj = MyClass()
zeroth = obj[0]
first = obj[1]
这可能吗?如果是这样,您如何在相关的 python 类中实现这一点?
【问题讨论】:
显然,对于那些在谷歌上搜索的人来说,这被称为“索引”。 除非列表在 python 中是这样的(不确定 - 我很少使用它),也许你应该把索引放在标题而不是列表中? @Merlyn,列表确实是这样,等等。还是添加了。 【参考方案1】:您需要编写或覆盖__getitem__
、__setitem__
和__delitem__
。
例如:
class MetaContainer():
def __delitem__(self, key):
self.__delattr__(key)
def __getitem__(self, key):
return self.__getattribute__(key)
def __setitem__(self, key, value):
self.__setattr__(key, value)
这是一个非常简单的类,允许对其属性进行索引访问。
【讨论】:
【参考方案2】:使用__getitem__
和__setitem__
方法。
class MyClass:
def __getitem__(self, key):
return some_value_related_to_key
def __setitem__(self, key, value):
# set value (if needed)
【讨论】:
以上是关于在 Python 中实现类似列表的索引访问的主要内容,如果未能解决你的问题,请参考以下文章
算法漫游指北(第三篇):数组(列表)链表跳表在python中实现链表