Ich suche etwas wie java.net.URL in Python-Modulen, Django, Zope oder wo auch immer in Python. Ich möchte es vorzugsweise von der Semantik Grund , weil das Ergebnis der Analyse des betroffenen Programms impliziert, dass die URL eine wesentliche Rolle darin spielt. Die Folge ist, dass eine solche URL-Klasse auch in diesem Programm einen großen praktischen Nutzen haben wird.
Natürlich könnte ich einen solchen Kurs selbst schreiben, aber ich würde mich gerne umsehen, bevor ich anfange, das Rad neu zu erfinden .
Ich habe urllib2 und urlparse . Das urlparse
hat grundsätzlich die Funktionalität, die ich brauche, aber es kapselt es nicht in eine Klasse wie java.net.URL
ein. Bezüglich meiner Analyse meines Programms funktioniert es auf dem Kopf stehend.
Ich habe mir auch den Quellcode von urlparse
in den Klassen SplitResult
und ParseResult
angesehen. Sie haben einige grundlegende Funktionen und sie können für Unterklassen verwendet werden. Aber ich muss den Rest der URL-Funktionen als Unterklassenmethoden neu schreiben.
Ich fand auch mxURL - Flexibler URL-Datentyp für Python . Es ist sehr nah an dem, was ich wirklich will. Nur scheint es ein Overkill für meinen Zweck zu sein.
Kann jemand eine andere Option vorschlagen? Soll ich das Rad neu erfinden?
Meine Lösung:
Um meine URL-Klasse zu bekommen, habe ich im Grunde zwei Dinge getan:
urlparse.ResultMixin
. urlparse.urlparse()
aufruft und Ergebnisse in transformiert
Parameter der URL-Instanz. urlparse
kapselt URLs in eine Klasse namens ParseResult
, so dass sie als eine Factory-Funktion für diese betrachtet werden kann. Direkt aus der Python-Dokumentation:
Wenn Sie verzweifelt eine Klasse namens URL
zum Verkapseln Ihrer URLs wünschen, verwenden Sie einen Alias ( URL = urlparse.ParseResult
) oder erstellen Sie einen Adapter.
Was wir ab 2018 haben:
Heute wird nur noch der Markt instand gehalten, aber der Hauptnachteil ist, dass er veränderbar ist, was natürlich keine Best Practices fördert. (Es gibt eine gute moderne Referenz - pathlib
, die aus unveränderlichen Klassen besteht.)
Insgesamt gibt es eine schmerzlose OO-Methode zum Parsen und Konstruieren von URLs.