3 Stimmen

Abrufen/Drucken von Ausführungskontext

EDIT: Diese Frage wurde mit Hilfe von apphacker und ConcernedOfTunbridgeWells gelöst. Ich habe den Code aktualisiert, um die Lösung zu reflektieren, die ich verwenden werde.

Ich schreibe derzeit einen Schwarmintelligenz-Simulator und möchte dem Benutzer eine einfache Möglichkeit bieten, seine Algorithmen zu debuggen. Neben anderen Ausgaben halte ich es für vorteilhaft, dem Benutzer einen Ausdruck des Ausführungskontextes zu Beginn jedes Algorithmusschrittes zu geben.

Der folgende Code erreicht, was ich brauchte.

import inspect

def print_current_execution_context():
    frame=inspect.currentframe().f_back #get caller frame
    print frame.f_locals #print locals of caller

class TheClass(object):
    def __init__(self,val):
        self.val=val
    def thefunction(self,a,b):
        c=a+b
        print_current_execution_context()

C=TheClass(2)
C.thefunction(1,2)

Dies ergibt die erwartete Ausgabe von:

{'a': 1, 'c': 3, 'b': 2, 'self': <__main__.TheClass object at 0xb7d2214c>}

Vielen Dank an apphacker und ConcernedOfTunbridgeWells, die mich auf diese Antwort hingewiesen haben

1voto

Bjorn Punkte 64323

Versuchen:

class TheClass(object):
    def __init__(self,val):
        self.val=val
    def thefunction(self,a,b):
        c=a+b
        print locals()

C=TheClass(2)
C.thefunction(1,2)

1voto

Sie können verwenden __locals__ um den lokalen Ausführungskontext zu erhalten. Siehe dieses Stackoverflow-Posting für einige Diskussionen, die ebenfalls von Belang sein könnten.

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