gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:32:30 25 4
gpt4 key购买 nike

我正在寻找一个模仿 Python 中不可变序列的类的最小示例。

class MySequence()
...

a = MySequence()

len(a)

for i in a:
pass

a[0]

必须实现的方法有哪些?

最佳答案

如果你只是想迭代你的序列,你只需要实现 __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 - 如何在 Python 中实现一个行为类似于序列的最小类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com