1
>>> d = {'m': 'mango', 'f': 'fish', 'a': 'apple'}
>>> d
{'m': 'mango', 'f': 'fish', 'a': 'apple'}
>>> d.keys()
dict_keys(['m', 'f', 'a'])
>>> for x in d.keys(): print(x)
m
f
a
>>> |

dict_keys()メソッドでこれをオーバーライドする方法は何ですか(方法__iter__ はオーバーライドされます)?

4

1 に答える 1

3

dict_keys()ディクショナリ ビュー オブジェクトです。そのようなオブジェクトはiterableです (つまり、 を使用して、そのようなオブジェクトに対して複数の独立した反復子を作成できますiter())。

このようなオブジェクトの独自の実装をメソッドから返すことができます.keys()。によって返される特定の型はdict.keys()再利用できません。独自のものを最初から実装する必要があります。

以前の回答で独自の作成について説明しました。カバーするかなりの数の方法があります。

ジェネレーター関数は、Python 関数を使用して反復子を作成するための単なる手法であることに注意してください。すべてのジェネレーター関数は、呼び出されると反復子を生成しますが、すべての反復子がジェネレーター反復子であるとは限りません。ジェネレーター式を使用するか、呼び出されるたびに項目の 1 つを__iter__返すself__next__メソッドと生成するメソッドを含めることによって、反復子を作成することもできます。

于 2013-08-13T13:11:08.243 に答える