2 Stimmen

Wie weist man einer Variablen eine Operation wie Summe oder Subtraktion usw. zu?

Ich möchte etwas Ähnliches tun wie

class A:
    def __init__( self, left, right, op ):
        self.left = left
        self.right = right
        self.op = op
    def calculate( self ):
        self.number = op( self.left, self.right )
        return self.number

und es zum Beispiel so verwenden:

a = A( 1, 2, + )
a2 = A( 2, 3, * )

Ich habe versucht

op = +
op = __add__

aber keines davon hat funktioniert. Kann mir jemand sagen, ob dies möglich ist (und falls ja, wie heißt das, denn ich weiß nicht einmal, wonach ich suchen soll). Oder ist der einzige mögliche Weg, eine große, hässliche if-else-Anweisung in calculate zu haben und den Wert von op zu überprüfen, der als str gespeichert wird?

Danke!

9voto

Lukáš Lalinský Punkte 39243

Siehe das operator Modul.

a = A( 1, 2, operator.add )

5voto

Steve Mayne Punkte 21317

Ein weiterer Weg, dies zu tun, wäre es, eine Lambda-Funktion als dritten Parameter bereitzustellen:

a = A( 1, 2, lambda x,y: x + y)
b = A( 1, 2, lambda x,y: x * y)

Dies würde es Ihnen ermöglichen, komplexere Operationen zu unterstützen, die nicht im operator-Modul enthalten sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X