Der Quelltext enthält viele überflüssige Sachen. Dazu zählen die "del"-Anweisungen. Da Python den Speicher automatisch verwaltet, musst Du ihn nicht manuell freigeben. Der Gebrauch von "del" dient im Allgemeinen (von Sonderfällen abgesehen) als schlechter Stil. Desweiteren sind die "Deklarationen" in Zeile 7, 8 und 72 unnötig. In Python müssen Variablen nicht deklariert werden, auch wenn es Brauch ist, die Exemplarattribute geschlossen in "__init__()" zu definieren. Die Zeilen in Deinem Code erzeugen übrigens auch keine Exemplarattribute, sondern Klassenattribute, wie Du an folgendem Beispiel sehen kannst:
Code: Alles auswählen
class Spam(object):
eggs = []
spam_one = Spam()
spam_one.eggs.append('hello world')
spam_two = Spam()
print spam_two.eggs
# Ausgabe: ['hello world']
Die Klasse "Internet" ist in ihrer gegenwärtigen Form ebenfalls unnütz. Ihre Methoden teilen keinerlei sinnvolle Exemplarattribute. Das ist keine Klasse, die ein in sich abgeschlossenes Objekt repräsentieren kann, sondern eine Sammlung von Funktionen im Klassengewand.
Desweiteren gibt es einige kleinere Kritikpunkte. Dein Code ist plattformabhängig: "c:\tmp" gibt es nur unter Windows. Und selbst unter Windows liegt das temporäre Verzeichnis nicht zwangsläufig unter diesem Pfad. Nutze das "tempfile"-Modul zum Zugriff auf das temporäre Verzeichnis. Im Allgemeinen gibt es den Backslash als Verzeichnistrenner auch nur unter Windows. Du solltest daher "os.path.join()" verwenden, um Pfade zusammenzusetzen. Das sorgt automatisch dafür, dass der Pfad entsprechend dem System zusammengesetzt wird. Angesichts dieser Plattformabhängigkeit verstehe ich auch nicht, wieso dann plötzlich "/home/f00" auftaucht.
Außerdem schließt Du Dateien nicht korrekt. Lese Ausnahmebehandlung und die "with"-Anweisung in der Dokumentation und im Tutorial nach.
Für reguläre Ausdrücke solltest Du sogenannte "Raw-Strings" verwenden.
"connect_to_internet()" finde ich merkwürdig. Derartige Tests sind unnötig, verwende einfach gleich den ProxyHandler. Falls kein Proxy definiert ist, tut der meines Wissens einfach nichts.
Den überflüssigen Import "progressbar" kannst Du auch noch entfernen. Zumindest solltest Du aber verraten, woher "progressbar" kommt, denn in der Standardbibliothek gibt es dieses Modul nicht
