You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

列表无iterator方法报错及自定义可下标迭代器类解决

问题与解决方案

问题背景

我的代码返回一个对象列表,示例如下:

[<DomesticHomePage: homepage>, <TopicLandingPage: Advice>, <ArticleListingPage: list two>, <ArticlePage: Article B1>, <ArticlePage: Article B2>, <ArticleListingPage: list one>, <ArticlePage: Article A0>, <ArticlePage: Article A1>, <ArticlePage: Article A2>, <ArticlePage: Article A4>, <ArticlePage: Article C0>, <ArticlePage: Article C1>, <ArticlePage: Article C2>, <ArticlePage: Article C3>, <ArticlePage: D1>, <MarketsTopicLandingPage: Markets>, <CountryGuidePage: Test GCP 0>, <CountryGuidePage: Test GCP 1>, <CountryGuidePage: Test GCP 2>, <CountryGuidePage: Test GCP 3>, <CountryGuidePage: Test GCP 4>, <CountryGuidePage: Test GCP 5>, <CountryGuidePage: Test GCP 6>, <CountryGuidePage: Test GCP 7>, <CountryGuidePage: Test GCP 8>]

当代码其他部分尝试调用该列表的.iterator()方法时,抛出错误:

AttributeError: 'list' object has no attribute 'iterator'

我需要返回一个具备iterator()方法的对象,于是尝试为列表创建迭代器类,但遇到“迭代器类不可下标”的错误。

尝试过程

最初编写的ItemsIterator类如下:

class ItemsIterator:

    def __init__(self, items):
        self.items = items
        self.count = 0

    def __iter__(self):
        return self
    
    def __next__(self):
        self.count += 1
        return list(self)[self.count]
    
    def __len__(self):
        return len(self.items)

之后尝试添加__getitem__方法,但问题仍未解决:

def __getitem__(self, key):
        return self.items[key]

最终解决方案

修改后的ItemsIterator类解决了所有问题:

class ItemsIterator:
    def __init__(self, items):
        self.items = items

    def iterator(self):
        return iter(self.items)

    def __len__(self):
        return len(self.items)
    
    def __getitem__(self, key):
        return ItemsIterator(self.items[key])

内容的提问来源于stack exchange,提问作者DavidU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:15:16