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