Ist das eine sinnvolle Nutzung der Methode Attribute in Python?

stimmen
0

Ich habe viele verschiedene Python-Dateien, die jeweils mit vielen verschiedenen Methoden. Jede dieser Methoden hat einige Aufgabe, und ich mag die Ergebnisse dieser Aufgabe speichern mit einem Dateinamen, die Ausgänge und Parameter für diese Methode beschreibt. Meine aktuelle Idee ist, für jede Methode zu haben, ein Wörterbuch mit einer return_name: file_name Struktur, als Methode Attribut gespeichert, zB

def addNumbers(number_1, number_2):
    addNumbers.filename_dictionary = {
        number1: number1_ + str(number_1) + .txt,
        number2: number2_ + str(number_2) + .txt
    }
    final_number = number_1 + number_2
    return final_number

Die grundlegende Motivation dafür ist, dass ich in der es zu diesem Verfahren im Zusammenhang alle Informationen behalten will, so dass, wenn ich die Dateinamen ändern will es leicht sein würde. Eine Alternative, die ich dachte, war eine ähnlich benannte Methode zu haben, die nur das Wörterbuch gibt, aber dies schien wie ein bequemer Weg, es zu tun.

def addNumbers(number_1, number_2):
    added_number = number_1 + number_2
    multiplied_number = number_1 * number_2
    return added_number, multiplied_number

def addNumbersDictionary(number_1, number_2):
    return {
        added_number: added + str(number_1) + _+ str(number_2)+.txt,
        multiplied_number: multiplied + str(number_1) + _+ str(number_2)+.txt,
    }

Einige Fragen: Gibt es grundlegende Mängel auf diese Idee? Gibt es alternative Muster, die dieses Problem in einer Standard-Weise lösen würde? Ist das eigentliche Problem verwaschen oder nicht sinnvoll ist?

Vielen Dank für jede Hilfe.

Veröffentlicht am 18/12/2018 um 11:11
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Ok, lassen Sie sich über Ihren Beispielcode vergessen und nur Stick mit Ihrer Hauptproblemstellung (leicht umformuliert):

Ich habe viele verschiedene Python-Dateien, die jeweils mit vielen verschiedenen Funktionen. Ich will Ergebnisse dieser Funktionen mit einem Dateinamen speichern, die die Ausgänge und Parameter beschreiben.

Aus Neugier, darf ich fragen, warum „mit einem Dateinamen“?

Wie dem auch sei: Sie wollen irgendwie „speichern“, um die Parameter und die damit verbundenen Ergebnis für einige Funktionen Anrufe. Der einfache Weg, dies in Python zu tun, ist eine Funktion Dekorateur zu verwenden. Hier ist eine quick & dirty Beispiel eine globale dict mit Hilfe der Daten zu speichern, die Sie interessiert:

from collections import defaultdict
from functools import wraps
saved_data = defaultdict(list)

def save(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        saved_data[func.__name__].append({"args": args, "kwargs": kwargs, "result": result})
        return result

    return wrapper 


@save
def add_nums(num1, num2):
   return num1 + num2


add_nums(1, 2)
add_nums(3, 4)
add_nums(num2=2, num1=1)

print(saved_data)

Jetzt haben Sie Ihre Daten gesammelt, können Sie tun, was Sie mit ihnen wollen.

Dies kann erheblich sein natürlich verbessert (dh die globalen vermeiden saved_data, indem inspect.getargspecs(func)eine einheitlichere Darstellung der gespeicherten Argumente usw. haben, aber das sollte man zumindest den Einstieg.

NB: Wenn Sie wirklich „Dateinamen beschreibt die Ausgänge und Parameter“ möchten, können Sie entweder schreiben die Dekorateur, so dass es diese „Dateinamen“ statt der tatsächlichen Werte speichert, oder jene Dateinamen später aus den gesammelten Werten erzeugen.

Beantwortet am 18/12/2018 um 12:41
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more