您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中实现行为类似于序列的最小类?

如何在Python中实现行为类似于序列的最小类?

如果只想对序列进行迭代,则只需实现__iter__返回可迭代的方法即可。最简单的方法是使用该yield语句创建生成器。

class MySequence(object):
    def __iter__(self):
        yield 1
        yield 2
        yield 3

for x in MySequence():
    print x # prints 1, then 2, then 3

但是,这不会启用MySequence()[1]。为此,您需要实现该__getitem__方法,并且可能也应该实现__len__

class MySequence(object):
    def __len__(self):
        return 3

    def __getitem__(self, key):
        if key == 0:
            return 1
        elif key == 1:
            return 2
        elif key == 2:
            return 3
        else:
            raise IndexError()

s = new MySequence()

for i in range(len(s)):
    print s[i] # prints 1, then 2, then 3

for x in s:
    print x # prints 1, then 2, then 3

注意,我省略了__iter__。只要在尝试获取超出范围的值时__getitem__引发IndexError,Python便可以将其用于迭代。(__iter__如果我想更清楚,或者想要非标准的迭代行为,我仍然可以包括在内。)

python 2022/1/1 18:26:36 有186人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶