Python-Nummer-ähnliche Klasse, die arithmetische Operationen speichert?

8

Ich frage mich, ob es ein Python-Modul gibt, mit dem ich so etwas machen könnte:

%Vor%

So MagicNumber würde alle speziellen Operator-Methoden implementieren, und alle würden Instanzen von MagicNumber zurückgeben, während sie verfolgen, welche Operationen ausgeführt werden. Gibt es so eine Klasse?

BEARBEITEN: Klärung

Ich möchte dies in einem Modul verwenden, das sich an viele Parameter einer willkürlichen Berechnung erinnern soll, die der Benutzer ausführen möchte. Also wird der Benutzer die Parameter einstellen und sie dann verwenden, um sein Ergebnis zu erzeugen. Wenn er dann entscheidet, dass er einen Parameter ändern möchte, spiegelt sich die Änderung sofort in seinem Ergebnis wider. Eine sehr vereinfachte Verwendungssitzung mit nur einer Parameterinstanz würde also so aussehen:

%Vor%

EDIT 2: mehr Klarstellung

Okay, ich werde tun, was ich von Anfang an hätte tun sollen. Ich werde den Kontext bereitstellen.

Sie sind Ingenieur und erstellen ein LaTeX-Dokument, in dem die Funktionsweise und Eigenschaften einiger Prototyp-Gadgets beschrieben werden. Es ist eine Aufgabe, die Sie wiederholt für verschiedene Prototypen durchführen werden. Sie schreiben eine kleine LaTeX-Python-Schnittstelle. Für jeden Prototyp erstellen Sie ein Python-Modul, das das erforderliche Dokument erzeugt. Darin geben Sie den LaTeX-Code ein, während Sie die Variablen so berechnen, wie sie benötigt werden, damit die Berechnungen im Zusammenhang stehen. Nach einer Weile bemerkst du zwei Probleme:

  1. Die Anzahl der Variablen und Parameter macht Einheimische zu einem Chaos und die Variablennamen sind schwer zu merken. Sie sollten sie in Kategorien einteilen, um sie alle im Auge zu behalten.
  2. Manchmal müssen Sie die gleiche Berechnung wiederholen, die sich auf die letzten paar Kapitel und ein Dutzend Zeilen erstreckt, wobei ein oder mehrere Parameter geändert wurden. Sie sollten einen Weg finden, die Code-Duplizierung zu vermeiden.

Aus diesem Problem kommt die ursprüngliche Frage.

    
Lauritz V. Thaulow 19.10.2011, 11:42
quelle

5 Antworten

10

So etwas?

%Vor%

Und hier ist es in Aktion:

%Vor%     
PaulMcG 21.10.2011, 01:17
quelle
7

Du könntest sympy , ein Computeralgebrasystem, das in Python geschrieben wurde, ausprobieren.

z. B.

%Vor%     
phimuemue 19.10.2011 11:46
quelle
5

Wird das nicht function genannt? Das hört sich nach einer einfachen Antwort an, aber ich meine es ehrlich.

%Vor%

Denken Sie nicht mit diesem hier in die falsche Richtung?

Um die Klärung anzusprechen:

%Vor%

Ich denke, ich bin eher für diese Art von Lösung, obwohl ich den Vorteil im Sympy-Modul sehe. Präferenz, schätze ich.

    
jro 19.10.2011 11:47
quelle
1
%Vor%     
utapyngo 19.10.2011 12:00
quelle
1

Ich denke, die Schwierigkeit besteht darin, "wie man Operatoren bevorzugt" anstatt eine Klasse zu implementieren.

Ich schlage vor, eine andere Notation (wie Reverse Polish Notation ) zu betrachten, die dabei helfen könnte, Prioritätsfragen zu beseitigen ...

    
Don 19.10.2011 12:15
quelle

Tags und Links