Ich konnte zu diesem Thema bei Google nichts finden, also denke ich, ich sollte es hier fragen:
Ist es möglich, Funktionen mit Python zu ketten, wie jQuery?
%Vor%Ich verliere viel Platz und Lesbarkeit, wenn ich diesen Code schreibe:
%Vor%Es scheint eine illusorische Bibliothek für die Schaffung solcher Funktionen zu geben, aber ich kann nicht verstehen, warum das so kompliziert aussehen muss ...
Danke!
Hier ist eine Erweiterung von Simon's ListMutator
Vorschlag:
Sie könnten noch einen Schritt weitergehen und ListMutator
act mithilfe der Sammlungen abstrakte Basisklassen . In der Tat könnten Sie list
selbst ableiten, obwohl es Sie möglicherweise daran hindern könnte, bestimmte Dinge zu tun, die Sie möglicherweise tun müssen ... und ich weiß nicht, was die allgemeine Meinung über die Unterklasse von eingebauten Typen wie list
ist.
Solange die Funktion einen Wert zurückgibt, können Sie sie verketten. In jQuery gibt eine Selektormethode normalerweise den Selektor selbst zurück, wodurch Sie die Verkettung durchführen können. Wenn Sie die Verkettung in Python implementieren möchten, können Sie Folgendes tun:
%Vor%Ihr Problem scheint jedoch zu sein, dass Ihre Funktionsargumente zu eng sind. Chaining ist keine Lösung dafür. Wenn Sie Ihre Funktionsargumente verdichten möchten, weisen Sie die Argumente einfach den Variablen zu, bevor Sie sie an die Funktion übergeben:
%Vor% Wenn wir über Objektmethoden sprechen, dann ist es trivial, nur return self
von jeder Methode. Auf der anderen Seite, wenn Sie ungebundene Funktionen ketten möchten, macht es nicht wirklich Sinn, sie so zu verketten, wie Sie wollen. Sicher, es sieht gut aus, aber es ist semantisch inkohärent, weil das "." steht für Objektattributzugriff und nicht für "Kette".
Zukünftige Referenz: Werfen Sie einen Blick auf Moka , eine minimalistische funktionale Programmierung Bibliothek. Aus ihren Beispielen:
%Vor%Sehen Sie sich dies an. Es ist eine einfache Wrapper-Klasse zum Verketten. Und es implementiert einige der Funktionen von underscore.js lib. Sie umhüllen Ihre Liste, Tupel oder Diktat mit einem Unterstrich und spielen mit ihm. Dann erhalten Sie den Wert, indem Sie einen weiteren Unterstrich hinzufügen.
%Vor%Ausgabe:
%Vor%