Python-Reflexion - Kann ich die verwenden dies, um den source code einer Methode definition
Doppelte von..
- Wie bekomme ich den code von python-Funktion?
- drucken Sie das code definiert eine lambda-Funktion
- Python: Wie bekommt man Python schreiben Sie den code einer Funktion, die es im Speicher hat?
Habe ich eine Methode definition die erfolgreich laufen, möchte aber, um es zu ändern in der runtime.
zB:
Wenn ich eine Methode
def sayHello():
print "Hello"
Typ(sayHello) gibt mir die Antwort 'type-Funktion'. Werde ich in der Lage, die Quellcode-string dieser Funktion Objekt. Ist es als eine Frage der Sicherheit ?
- Sie kann dies nicht tun. Duplizieren: stackoverflow.com/questions/427453/...; stackoverflow.com/questions/334851/...; stackoverflow.com/questions/399991/...
- Es ist Python: haben Sie bereits die Quelle.
- Ich würde empfehlen anderen Frage mit mehr details. Ich habe das komischste Gefühl, dass das, was Sie wirklich wollen, zu tun, könnte nur verlangen, Verschlüsse/Dekorateure, sondern weil alles, was Sie gefragt haben, über print-source-code (und versuchen, es zu ändern irgendwie), Sie sind immer enttäuschend Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nutzung des inspect-Moduls:
Muss die Funktion in einem Modul definiert werden, die Sie importieren.
sayHello.func_code.co_code
gibt einen string zurück, ich denke, dass enthält den kompilierten code der Methode. Da Python ist intern kompilieren Sie den code, um virtual machine-bytecode, könnte dies alles sein, was übrig bleibt.Kann man zerlegen, aber:
Diese Drucke:
Haben Sie einen Blick auf Decompyle für einen de-compiler.
Zu Holen Sie sich die Quelle von einer Methode auf eine Instanz der Klasse zu tun:
Lesen Sie mehr: https://docs.python.org/2/library/inspect.html#inspect.getsource
Es ist nicht eine eingebaute Funktion, um Quell-code einer Funktion, jedoch konnten Sie bauen, die Sie besitzen, wenn Sie Zugriff auf den source-code (es wäre in Ihrem Python/lib-Verzeichnis).