Ich refactor mein alter Code und möchte die Namen der Funktionen in Übereinstimmung mit pep8 ändern. Aber ich möchte Abwärtskompatibilität mit alten Teilen des Systems aufrechterhalten (eine vollständige Umgestaltung des Projekts ist unmöglich, weil Funktionsnamen Teil der API sind und einige Benutzer den alten Client-Code verwenden).Umbenennen von Funktionen unter Beibehaltung der Abwärtskompatibilität
Einfaches Beispiel, alten Code:
def helloFunc(name):
print 'hello %s' % name
Neu:
def hello_func(name):
print 'hello %s' % name
Aber beide Funktionen funktionieren sollte:
>>hello_func('Alex')
>>'hello Alex'
>>helloFunc('Alf')
>>'hello Alf'
Ich denke an:
def helloFunc(name):
hello_func(name)
, aber ich mag es nicht (im Projekt über 50 Funktionen, und es wird ein chaotisch aussehen, denke ich).
Was ist der beste Weg (abgesehen von der Duplizierung der Quelle)? Ist es möglich, einen universellen Dekorateur zu kreieren?
Danke.
Oh, wie könnte ich das vergessen! Vielen Dank! – vlad
@vlad - Ich habe eine Funktion hinzugefügt, die automatisch 'function_with_underscores' aus dem Modul 'modinput' in' modadd' als 'functionWithUnderscores' hinzufügt (aber es wird nicht wirklich mit' lambda' funktionieren, da sie keine haben kontrollierbarer Name (AFAIK) – mgilson