Builtin module in library patchen
Verfasst: Dienstag 16. Dezember 2014, 18:58
Hi, ich versuche das standard os module zu patchen welches von einer library hergenommen wird.
lib.py:
patch.py:
Der os.getcwd() Aufruf in der patch.py wird ausgegeben, der von do() aus der lib.py nicht. Wie kann ich das fixen?
Vielen Dank für die Hilfe,
Hazzard
lib.py:
Code: Alles auswählen
import os
def do():
return os.getcwd()
Code: Alles auswählen
import os, functools
class MyMonkey(object):
def __init__(self, object):
self.obj = object
def __getattr__(self, name):
attr = getattr(self.obj, name)
@functools.wraps(attr)
def proxy(*args, **kwargs):
print("Called {}({}, {})".format(name, args, kwargs))
return attr(*args, **kwargs)
return proxy
from lib import do
os = MyMonkey(os)
print(os.getcwd())
print(do())
Vielen Dank für die Hilfe,
Hazzard