1. ホーム
  2. python

なぜpythonでは、クラスに__getitem__を定義すると反復可能になるのですか?

2023-11-13 06:27:14

質問

なぜクラスに __getitem__ を定義すると反復可能になるのでしょうか?

例えば私が書いたら

class b:
  def __getitem__(self, k):
    return k

cb = b()

for k in cb:
  print k

出力が出る。

0
1
2
3
4
5
6
7
8
...

本当は"for k in cb:"からエラーが返ってくることを期待したいところですが。

どのように解決するのですか?

もし、あなたが PEP234 でイテレータを定義すると、こう書いてあります。

1. An object can be iterated over with "for" if it implements
   __iter__() or __getitem__().

2. An object can function as an iterator if it implements next().