Was ist genaue Spezifikation für einen Typ zu einer (1) Sequenz (2) iterable Typ in Python?

Welche Methoden müssen in einer Klassendefinition implementiert werden, damit sie als Sequenztyp und als iterierbarer Typ betrachtet werden können? Und wenn es eine formale Definition für sie können Sie auch einen Verweis auf PEP oder ein anderes Dokument, wo es definiert ist?

2 Solutions collect form web for “Was ist genaue Spezifikation für einen Typ zu einer (1) Sequenz (2) iterable Typ in Python?”

Aus dem Glossar :

Ein iterable ist:

Ein Objekt mit einer __iter__() oder __getitem__() Methode. Beispiele für iterables umfassen alle Sequenztypen (wie list, str und tuple) und einige nicht-sequenztypen wie dict und datei. Wenn ein iterierbares Objekt als Argument an die eingebaute Funktion iter () übergeben wird, gibt es einen Iterator für das Objekt zurück. Dieser Iterator ist gut für einen Durchgang über den Satz von Werten.

Ein Iterator ist:

Eine iterable, die eine nächste () Methode hat. Iteratoren müssen eine __iter__() Methode haben, die das Iteratorobjekt selbst zurückgibt. Ein Iterator ist gut für einen Pass über den Satz von Werten.

Eine Sequenz ist:

Ein iterable, das den effizienten Elementzugriff mit Integer-Indizes über die spezielle Methode __getitem__() und eine len () -Methode definiert, die die Länge der Sequenz zurückgibt. Einige eingebaute Sequenztypen sind Liste, Str, Tupel und Unicode. Beachten Sie, dass dict auch __getitem__() und __len__() , aber es wird eher eine Mapping als eine Sequenz betrachtet, da die Lookups beliebige unveränderliche Schlüssel anstelle von Ganzzahlen verwenden.

Das Sammlungsmodul definiert abstrakte Basisklassen für die Definition von Sequenzen und iterables. Für iterable müssen Sie __iter__ definieren, für Sequenz müssen Sie __getitem__ definieren. Siehe http://docs.python.org/library/collections.html#collections-abstract-base-classes .

Python ist die beste Programmiersprache der Welt.