Ich habe eine Python-Funktion „send_message“, die drei Argumente verwendet:Fluent Interface mit Python
send_message("i like windmills", to="INBOX", from="OUTBOX")
Ich denke an eine fließend Schnittstelle oben drauf setzen. Im Idealfall würde Ich mag folgendes schreiben:
send_message("i like windmills").to("INBOX").from("OUTBOX")
oder
send_message("i like windmills").from("OUTBOX").to("INBOX")
Update: Die to()
Informationen ist obligatorisch, aber die from()
ist nicht (wie bei echten Buchstaben). Also wäre dieser auch ein gültiger Anruf:
send_message("i like windmills").to("INBOX")
Irgendwelche Ideen, wie man dies oder etwas ähnliches erreicht?
Der allgemeine Ansatz von Methoden eines Objekts mit „Selbst“ Rückkehr wird von mir verstanden, aber in meinem Verständnis, dies zu so etwas wie dies führen würde:
message = Message("i like windmills")
message.to("INBOX").from("OUTBOX").send()
Aber das ist nicht so schön wie die vorherige Beispiel und ich würde dann eigentlich die Originalversion mit den genannten Argumenten vorziehen.
Jede Hilfe wird geschätzt.
Sie möchten das [Builder Pattern] (https://en.wikipedia.org/wiki/Builder_pattern) implementieren. 'send_message' wäre die Factory-Methode zum Erstellen des Builders. –
Alternativ könnten Sie [currying] (https://en.wikipedia.org/wiki/Currying) implementieren; es vermeidet das Objekt "Overhead", das offensichtlich vom OP nicht gewünscht wird. –
Hallo Lutz, nicht ganz. Das Builder-Muster erfordert eine letzte "build()" -Methode in der Kette, um die Aktion tatsächlich auszuführen. Ich hatte gehofft, einen Weg zu finden, dass jede Methode in der Kette erkennen kann, ob es die letzte ist (durch Meta-Programmierung?). Wenn dies der Fall ist, führt es die Aktion implizit aus. – samba2