rainbowadn/main.py
2023-10-02 19:07:57 +00:00

37 lines
782 B
Python

from rainbowadn.instrument import *
class Print(Instrumentation):
def __init__(self, target, methodname: str, msg: str):
super().__init__(target, methodname)
self.msg = msg
def instrument(self, method, *args, **kwargs):
print(self.msg, end=" ")
return method(*args, **kwargs)
class C:
@classmethod
def m(cls):
print("m")
with Print(Instrumentation, "__exit__", "exit"):
print1 = Print(C, "m", "1")
print2 = Print(C, "m", "2")
print3 = Print(C, "m", "3")
C.m()
print1.__enter__()
C.m()
print2.__enter__()
C.m()
print3.__enter__()
C.m()
print1.__exit__(None, None, None)
C.m()
print2.__exit__(None, None, None)
C.m()
print3.__exit__(None, None, None)
C.m()