Sagen wir, ich habe einige sehr lange Funktion module.my_function
, die ungefähr so ist:Python - Verwenden Sie externe Funktion als Klassenmethode
Mit einer großen Anzahl von Argumenten und Keyword-args. Ich möchte, dass diese Funktion sowohl als Teil des Moduls module
als auch als Klassenmethode für myClass
verwendbar ist. Der Code für die Funktion bleibt genau gleich, aber in myClass
können einige Schlüsselwort-Argumente andere Standardwerte annehmen.
Was ist der beste Weg, dies zu tun? Früher war ich so etwas wie tun:
class myCLass(object):
def __init__(self,...
def my_function(self, param1,param2,param3='hello',param4='qaz',param5=['baz'],...):
module.my_function(param1,param2,param3=param3,param4=param4,param5=param5,...)
scheint es ein wenig albern, all diese Argumente zu schreiben, dass viele Male, vor allem mit einer sehr großen Anzahl von Argumenten. Ich habe auch überlegt, etwas wie module.my_function(**locals())
innerhalb der Klassenmethode zu tun, aber ich bin mir nicht sicher, wie man mit dem self
Argument umgehen soll und ich weiß nicht, ob dies zu anderen Problemen führen würde.
Ich konnte nur kopieren Sie den gesamten Code für die Funktion einfügen, aber das wirklich scheint nicht sehr effizient, wenn alles, was zu ändern ist schon ein paar Standardwerte und der Code für my_function
ist sehr lang. Irgendwelche Ideen?
Gibt es einen Grund, dass alle der Keyword-args explizit sein müssen und Sie können nicht nur kwargs benutzen? – James
Der Grund ist wahrscheinlich, dass ich einen Coder nicht zu erfahren bin ... Wie würde ich Kwargs in dieser Situation verwenden und einige der Standardwerte auf etwas anderes setzen? Sprich 3-5 im obigen Beispiel sind diejenigen, die ich verändere .. würde ich nur Params 1-5 angeben und Kwargs für den Rest verwenden? – dieggsy