Ich habe oft das Problem, dass ich zusätzliche Methoden zu Klassen hinzufügen möchte, die ich nicht kontrolliere. Ich möchte zum Beispiel eine Funktion prettyPrint
haben, die auf verschiedenen Objekttypen arbeiten kann, die keine vereinheitlichte API haben (z. B. spezielle __str__
Methoden).Alternativen zu Multimethoden in Scala oder Jython
Die Nice
Sprache und R
erreicht dies mit Multimethoden, die das Besucher-Muster schön vermeiden. Zum Beispiel hat R
die plot()
Funktion. Individuelle Programmierer können neue Klassen erstellen, um Datentypen zu definieren (z. B. Netzwerkgraphen oder Börsentickerdaten). Ein sekundärer Benutzer/Programmierer könnte dann eine Plot-Funktion schreiben, um die Funktionalität auszufüllen, auch wenn sie keinen Zugriff auf den Graphen- oder Aktien-Ticker-Code oder den Code anderer Plot-Funktionen haben.
Vorausgesetzt, dass ich später viele Funktionen hinzufügen möchten, scheint die Verwendung class.method()
undurchführbar. Viele class_plot()
Funktionen für jeden Typ scheint auch eine schlechte Idee. Definieren einer großen plot()
-Funktion, die Typen prüft, ist nicht erweiterbar.
Was sind Alternativen zu Multimethoden? Insbesondere interessieren mich Designs, die in Jython und Scala funktionieren könnten.