2016-06-05 27 views
0

Die Mail API-Schicht-Implementierung für Python (https://github.com/bear/python-twitter/blob/master/twitter/api.py) bei A Python wrapper around the Twitter API. gibt eine Sequenz von Instanzen d.h. als Rückkehr derWorin besteht der Zweck, Werte in einer Sequenz von Instanzen zu speichern?

status=api.GetHomeTimeline(). 

Intern verstehe ich es eine Liste von json dicts in dieser Reihenfolge umwandelt.

Ich musste etwas herumtüfteln, um herauszufinden, wie man alle Werte auslesen kann.

Es gibt eine Reihe von Klassen, eine direkt auslesen kann, d.h .:

status[0].user.listed_count 

den Wert druckt. Aber für die Werte unter

die drei Variablen: Wert-Paare werden als Liste gespeichert.

Warum ist das so? Ist das eine übliche Programmiertechnik? Bis jetzt habe ich mich immer mit verschachtelten json dicts/lists beschäftigt, was viel einfacher ist, herauszufinden, wie man über alles iterieren kann.

+0

Wenn Sie den Wrapper nicht möchten, verwenden Sie den Wrapper nicht! Wenn Sie sich mit JSON wohler fühlen, ist das in Ordnung. – jonrsharpe

+0

Nein! Ich kritisiere es nicht! Ich stolpere über diese Technik und lese nie darüber, also frage ich mich: Hey, was ist das, gibt es ein Paradigma oder etwas darüber, wo ich etwas darüber lernen kann. Es muss einen besonderen Vorteil dabei geben, denn nach meinem Verständnis hat die API-Ebene zuerst die Daten im JSON-Format und konvertiert sie dann in Instanzen. –

+0

So arbeiten API-Wrapper, sie abstrahieren die Transportschicht und lassen Sie mit nativen Darstellungen der Ergebnisse umgehen; In diesem Fall werden Python-Objekte für Benutzer, Tweets usw. freigelegt. – jonrsharpe

Antwort

1

Die ultimative Antwort in diesem Fall kann nur von den Autoren dieser Implementierung gegeben werden.

Im Allgemeinen führt eine tief verschachtelte Information zu generischen Lösungen für Hersteller dieser Informationsinstanz, belastet aber den Verbraucher (insbesondere einen genetischen) stärker, um die Dinge so zu regeln, wie sie gemeint sind.

Hier flacht eine Python API-Implementierung einige Dinge ab, so dass Sie über sie iterieren können oder wie in the API wrapper documentation selbst dokumentiert. Sie können leicht herausfinden - wie Sie es vielleicht getan haben, wenn ich Ihrer Frage richtig folge - welches JSON-Objekt in welche Position gesetzt wird und was Sie alles überspringen können, wenn Sie einen bestimmten Parameter auf Anfrage auf false setzen . In meiner täglichen Arbeit werde ich oft mit Konzepten konfrontiert, die tief verschachtelte Bäume für Informationen vorschlagen, und in den meisten, wenn nicht sogar allen Fällen, führt das Feedback von Architekten und Anwendern gleichermaßen zu einer Abflachung dieser Strukturen, um das Gleichgewicht zwischen Generizität und Vorbereitung zu erreichen für die zukünftige Erweiterung als ein Extrem und Praktikabilität, Leistung und Low-Cost-Marktdurchdringung hier und jetzt.

Ich hoffe, das war auf der richtigen Ebene für die Beantwortung Ihrer Frage. Wenn nicht, bitte zögern Sie nicht zu fragen.