Was ist ein Mapping-Objekt, je nach Diktat-Typ?

9

Die Dokumentation enthält drei Möglichkeiten zum Erstellen einer dict-Instanz:

%Vor%

Was genau ist ein Mapping hier? Was ist die minimale Schnittstelle, die für dict(mapping) benötigt wird?

    
wim 17.11.2016, 23:48
quelle

5 Antworten

5

der Quellcode für CPython , dieser Kommentar:

%Vor%

Also, die minimale Schnittstelle, die für dict (mapping) benötigt wird, scheint .keys() und .__getitem__() zu sein.

Beispielprogramm:

%Vor%     
Robᵩ 18.11.2016, 00:05
quelle
4

Das Glossar definiert es wie folgt:

  

Ein Containerobjekt, das beliebige Schlüsselsuchen und -implementierungen unterstützt   die in den Zuordnungen oder MutableMapping abstrakte Basis   Klassen. Beispiele hierfür sind dict , collections.defaultdict ,    collections.OrderedDict und collections.Counter .

Es sieht also so aus, als ob die minimale Liste von Methoden, um die Definition zu erfüllen, __getitem__ , __iter__ , __len__ , __contains__ , keys , items , values , get ,% ist. co_de% und __eq__ . Obwohl ich wette, der dict-Konstruktor benötigt eigentlich nicht alle diese.

    
Peter DeGlopper 17.11.2016 23:54
quelle
2

Es scheint, dass die Implementierung von keys und __getitem__ ausreichend ist.

%Vor%     
wim 18.11.2016 00:06
quelle
0

Wie immer können Sie den Code lesen:)

Also, gehen wir zu Include/dictobject.h :

%Vor%

Wir suchen also nach Dingen, die PyMapping_Keys und PyObject_GetItem haben. Da wir faul sind, verwenden wir einfach das Suchfeld in den Python-Dokumenten und finden die Zuordnungen Protokoll . Wenn Ihr CPython PyObject diesem Protokoll folgt, können Sie also loslegen.

    
Marcus Müller 18.11.2016 00:09
quelle
-1

Es ist die beste Antwort für Ihre Frage:

Ссылка

Es ist das einfachste Beispiel für das Mapping: {}

Wenn Sie einen benutzerdefinierten Zuordnungstyp erstellen möchten, können Sie ihn von der Basis dict übernehmen und die Methode __getitem__ magic überschreiben (dies hängt von Ihren Anforderungen ab)

    
pivanchy 18.11.2016 00:02
quelle

Tags und Links