Verwenden eines geordneten Diktats als Objektverzeichnis in Python

8

Ich weiß nicht, warum das nicht funktioniert:

Ich verwende die odict Klasse von PEP 372 , aber ich möchte es als __dict__ -Member verwenden, dh:

%Vor%

Aber aus irgendeinem Grund bekomme ich seltsame Ergebnisse. Das funktioniert:

%Vor%

Aber der Versuch, auf das eigentliche Wörterbuch zuzugreifen, funktioniert nicht:

%Vor%

Und es wird seltsamer:

%Vor%

Ich fühle mich sehr dumm. Kannst du mir helfen?

    
itsadok 18.01.2009, 12:33
quelle

3 Antworten

8

Die nächste Antwort auf Ihre Frage, die ich finden kann, ist Ссылка .

Wenn __dict__ kein tatsächliches dict() ist, wird es ignoriert und die Attributsuche schlägt fehl.

Die Alternative dazu ist, das Odict als Mitglied zu verwenden und die Methoden getitem und setitem entsprechend zu überschreiben.

%Vor%     
sykora 18.01.2009, 12:59
quelle
4

Alles in sykoras Antwort ist richtig. Hier ist eine aktualisierte Lösung mit den folgenden Verbesserungen:

  1. funktioniert sogar im Spezialfall des direkten Zugriffs auf a.__dict__
  2. unterstützt copy.copy()
  3. unterstützt die Operatoren == und !=
  4. verwendet collections.OrderedDict aus Python 2.7.

...

%Vor%     
Stuart Berg 27.12.2012 01:30
quelle
1

Wenn Sie nach einer Bibliothek mit Attributzugriff auf OrderedDict suchen, bietet das Paket orderedattrdict dies.

> %Vor%

Offenlegung: Ich habe diese Bibliothek verfasst. Dachte, es könnte zukünftigen Suchern helfen.

    
S Anand 03.09.2015 14:07
quelle

Tags und Links