Frage

Ich lese zur Zeit Dive Into Python von Mark Pilgrim, und haben auf den Abschnitt bekommen Erbe. In Abschnitt 5.5 , Pilger erwähnt die Unterschiede zwischen den von der Wrapper-Klasse vererben UserDict vs erben vom eingebauten in dict Art.

Ich habe Probleme zu verstehen, warum jemand würde sogar mit der Wrapper-Klasse stören ... Was sind die Vorteile aus der UserDict Wrapper-Klasse erbt (oder eine der anderen UserXxx Klassen)?

Ihre Eingabe wird sehr geschätzt. Dank!

War es hilfreich?

Lösung

Sie haben Recht:

  

Die Notwendigkeit für diese Klasse wurde   weitgehend verdrängt durch die Fähigkeit zu   Unterklasse direkt von dict (ein Feature   das wurde zur Verfügung, beginnend mit   Python-Version 2.2). Vor dem   Einführung von dict, die UserDict   Klasse wurde verwendet, um zu erstellen   Wörterbuch artige Unterklassen,   erhalten neue Verhaltensweisen durch zwingende   bestehende Methoden oder neue hinzufügen.

Beachten Sie den ersten Satz. Dies ergibt sich aus dem Dokumentation von UserDict.

Oh, und in Python 3 ist es weg.

Andere Tipps

Die Wrapper-Klassen wurden aus Python 3 entfernt, da sie so nützlich alle für eine Weile jetzt nicht gewesen sein. Die mixin Klasse, UserDict.DictMixin, ist eine ganz andere Geschichte - seine nützlichen Features sind jetzt alle über die "abstrakten Basisklassen" im collections Modul gefunden

Ich fand, auf der Seite, die Sie verbunden sind, einen Hinweis auf die Antwort ein:

  

In Versionen von Python vor 2.2   Sie konnten nicht direkt Unterklasse   vordefinierten Datentypen wie Strings,   Listen und Wörterbücher. Kompensieren   Hierfür kommt Python mit Wrapper   Klassen, die das Verhalten nachahmen   Diese vordefinierten Datentypen: UserString,   Userlist, und UserDict. Verwendung einer   Kombination aus normalen und speziellen   Methoden, die UserDict Klasse tut ein   ausgezeichnete Imitation eines Wörterbuchs.   In Python 2.2 und höher können Sie   erben Klassen direkt von Built-in   Datentypen wie dict.

In der Realität heute Sie wollen wahrscheinlich zu Unterklasse dict statt UserDict.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top