Ich habe eine Funktion, wo ich verschiedene Ausgabezeichenfolgen für ein anderes Programm, das ich aufrufen muss, je nachdem, welchen Typ es will.Was ist die kanonische Art, verschiedene Arten in Python zu behandeln?
Grundsätzlich benötigt das aufgerufene Programm ein Befehlszeilenargument, das ihm mitteilt, mit welchem Typ es aufgerufen wurde.
Glücklicherweise fand ich this answer auf SO auf, wie man eine Variable für den Typ überprüft. Aber ich habe gemerkt, dass die Leute auch Einwände erhoben haben, dass das Suchen nach Typen ein "nicht objektorientiertes" Design verrät. Also, gibt es eine andere Möglichkeit, vermutlich mehr "objektorientierte" Art, dies zu handhaben, ohne explizit nach Typ zu suchen?
Der Code habe ich jetzt geht ungefähr so:
def myfunc(val):
cmd_type = 'i'
if instance(val, str):
cmd_type = 's'
cmdline = 'magicprogram ' + cmd_type + ' ' + val
Popen(cmdline, ... blah blah)
...
, die ganz gut funktioniert, aber ich wollte nur wissen, ob es irgendeine Technik ist von Ich bin nicht bewusst.
Wie geben Sie alles mit einem Typ in der Befehlszeile ein? – geoffspear
@Wobble, ich habe ein Beispiel hinzugefügt. Ich erkannte, dass die Frage nicht sehr offensichtlich war. Hoffe es ist jetzt besser. –
Wie wird myfunc aufgerufen? Ich würde vorschlagen, zwei verschiedene Funktionen zu haben, die eine andere Art von Argument erwarten, und dann eine private Funktion des unteren Teils der Funktion zu machen, die Sie mit geeigneten Argumenten von jeder der früheren Funktionen aufrufen. – teukkam