Kapitel 12. Spezielle Methoden für Sequenzen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Überprüfe nicht, ob sie eine Ente ist: Überprüfe, ob sie wie eine Ente quakt, wie eine Ente läuft, usw., usw., je nachdem, mit welcher Teilmenge des entenähnlichen Verhaltens du deine Sprachspiele spielen willst. (
comp.lang.python, Jul. 26, 2000)Alex Martelli
In werden wir in diesem Kapitel eine Klasse erstellen, die eine mehrdimensionale VectorKlasse repräsentiert - ein deutlicher Fortschritt gegenüber der zweidimensionalen Vector2d aus Kapitel 11.Vector wird sich wie eine standardmäßige unveränderliche flache Python-Sequenz verhalten. Ihre Elemente werden Floats sein, und sie wird am Ende dieses Kapitels Folgendes unterstützen:
-
Grundlegendes Sequenzprotokoll:
__len__und__getitem__ -
Sichere Darstellung von Instanzen mit vielen Items
-
Richtige Slicing-Unterstützung, die neue
VectorInstanzen erzeugt -
Aggregate Hashing, bei dem jeder enthaltene Elementwert berücksichtigt wird
-
Erweiterung der benutzerdefinierten Formatierungssprache
Wir werden auch den dynamischen Zugriff auf Attribute mit __getattr__implementieren, um die schreibgeschützten Eigenschaften zu ersetzen, die wir in Vector2dverwendet haben - auch wenn dies nicht typisch für Sequenztypen ist.
Die codeintensive Präsentation wird durch eine konzeptionelle Diskussion über die Idee von Protokollen als informelle Schnittstelle unterbrochen. ...